Comments (48)
@maria-farooq you can try this issue. You can join Restcomm irc to discuss this issue (see here: http://www.telestax.com/open-source/irc-channel/)
from restcomm-connect.
Thanks @gvagenas,
I noticed RestComm restful APIs exist for many features; calls, sms etc,, but not for conference so i believe this task is to add conference APIs.
As RestComm Restufl APIs are very similar to Twilio's so we have to follow https://www.twilio.com/docs/api/rest/conference
from restcomm-connect.
@maria-farooq right, we need a REST API for conferences.
If you need guidance and help you can join Restcomm IRC channel so we can chat http://www.telestax.com/open-source/irc-channel/
from restcomm-connect.
Hi @gvagenas ,
Just an update in ticket.
I've made changes in restcomm.http project and now i am testing them, will tell here once i have some results.
thanks
maria
from restcomm-connect.
Thanks for the update @maria-farooq
from restcomm-connect.
Hi, Here is update on the ticket.
I am facing difficulty with testing API, I am having following exception when calling existing Calls API.
May be my build process is not correct.. i am compiling it with java 7
so i am troubleshooting it now.
javax.servlet.ServletException: java.lang.NoSuchMethodError: org.mobicents.servlet.restcomm.entities.CallDetailRecordFilter.<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;)V com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) javax.servlet.http.HttpServlet.service(HttpServlet.java:847) org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380) org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
from restcomm-connect.
@maria-farooq Java 7 is fine.
Make sure you build the whole project before you run the testsuite.
The exception reported here should be also an error in your IDE or when you build the project.
from restcomm-connect.
Hi Team,
What did i do?
Today i worked on issue and added support for following resources
- /2010-04-01/Accounts/{AccountSid}/Conferences/{ConferenceSid}
- /2010-04-01/Accounts/{AccountSid}/Conferences
But i used same dao for conference as we are already using for calls (CallDataRecord).
Observations:
In database, i observed, conference is logged as individual calls. (in restcomm_call_detail_records table)
I did not find any common ConferenceSid type thing which I could use to combine/relate multiple calls.
Only common thing is SIP number which every dials to connect to conference room.
Another thing which we have to do is to add support for Participants list resource which a subresource of a Conference instance resource
Again "ConferenceSid" is key grouping all participants of a Conference Call.
Solution 1:
If i am not missing anything then we might need to save ConferenceSid as well, in database.
Solution 2:
we can group calls by common SIP number which is everyone using to connect to Conference.
I will resume work on it tomorrow afternoon
Please guide me if i need to take a different track..
from restcomm-connect.
Thanks @maria-farooq
You can use https://www.twilio.com/docs/api/rest/conference and https://www.twilio.com/docs/api/rest/participant as a basis.
Solution 1 seems the right one to go with.
from restcomm-connect.
Maria,
Agree with Jean that solution 1 is the most appropriate one.
George
On Mon, Mar 21, 2016 at 12:11 PM, Jean Deruelle [email protected]
wrote:
Thanks @maria-farooq https://github.com/maria-farooq
You can use https://www.twilio.com/docs/api/rest/conference and
https://www.twilio.com/docs/api/rest/participant as a basis.Solution 1 seems the right one to go with.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
#5 (comment)
George Vagenas
from restcomm-connect.
thanks for feedback @deruelle @gvagenas
I will update my progress here
from restcomm-connect.
Hi @gvagenas here are my changes, https://github.com/maria-farooq/Restcomm-Connect/commits/issue-5
I committed my changes so you could review my progress.
I am doing testing and restcomm.testsuit is still left to update.
Thanks,
Maria
from restcomm-connect.
@gvagenas can you help me how can i deploy restcomm.application.war
from restcomm-connect.
Hi George, sorry to ping you on Saturday, in case you are already working, can you help in a case
- Despite following instructions i was unable to deploy my changes
- I am getting following exception
- I am looking into it, meanwhile if you see my message, may be your help will expedite my testing
Caused by: org.hsqldb.HsqlException: error in script file line: /Users/mariafarooq/Downloads/Restcomm-JBoss-AS7-7.6.0.835/standalone/deployments/restcomm.war/WEB-INF/data/hsql/restcomm 2
at org.hsqldb.error.Error.error(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.scriptio.ScriptReaderText.readDDL(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.scriptio.ScriptReaderBase.readAll(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.persist.Log.processScript(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.persist.Log.open(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.persist.Logger.open(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.Database.reopen(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.Database.open(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.DatabaseManager.newSession(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
... 35 more
Caused by: org.hsqldb.HsqlException: system object cannot be modified
at org.hsqldb.error.Error.error(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.error.Error.error(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.StatementSchema.checkSchemaUpdateAuthorisation(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.StatementSchema.setOrCheckObjectName(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.StatementSchema.getResult(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.StatementSchema.execute(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
at org.hsqldb.Session.executeCompiledStatement(Unknown Source) [hsqldb-2.3.2.jar:2.3.2]
... 44 more
from restcomm-connect.
meanwhile i am trying to build entire restcomm binary locally, so that i could eliminate human error in this file replacement process
from restcomm-connect.
i am able to deploy my changes.
from restcomm-connect.
Hi @gvagenas i am able to generate and store conferenceSid, Lets discuss possibility of a new table in restcomm DB by the name "conference-detail-records". I will be waiting for your response and then we can discuss on skype.
from restcomm-connect.
I am preparing a short document for proposed table structure and its relation with other tables and scenarios it which it will be populated/updated. Will share it here tomorrow evening
from restcomm-connect.
What has been done so far:
Conference API
Sample output for http://IP:8080/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences
<RestcommResponse>
<object class="org.mobicents.servlet.restcomm.entities.ConferenceDetailRecordList">
<Conferences page="0" numpages="0" pagesize="50" total="0"
start="0" end="3"
uri="/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences"
firstpageuri="/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences?Page=0&PageSize=50"
previouspageuri="null" nextpageuri="null"
lastpageuri="/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences?Page=0&PageSize=50">
<Conference>
<Sid>CF078109d767e64378ad422716e104086d</Sid>
<DateCreated>Tue, 10 May 2016 23:20:41 +0500</DateCreated>
<DateUpdated>Tue, 10 May 2016 23:21:19 +0500</DateUpdated>
<AccountSid>ACae6e420f425248d6a26948c17a9e2acf</AccountSid>
<Status>RUNNING_MODERATOR_PRESENT</Status>
<StartTime />
<EndTime />
<ApiVersion>2012-04-24</ApiVersion>
<FriendlyName>ConferenceApp</FriendlyName>
<Uri>
/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences/CF078109d767e64378ad422716e104086d
</Uri>
<SubresourceUris />
</Conference>
<Conference>
<Sid>CF18efdb3c81c340b99016fdad50caae73</Sid>
<DateCreated>Tue, 10 May 2016 23:21:39 +0500</DateCreated>
<DateUpdated>Tue, 10 May 2016 23:21:58 +0500</DateUpdated>
<AccountSid>ACae6e420f425248d6a26948c17a9e2acf</AccountSid>
<Status>RUNNING_MODERATOR_PRESENT</Status>
<StartTime />
<EndTime />
<ApiVersion>2012-04-24</ApiVersion>
<FriendlyName>ConferenceApp</FriendlyName>
<Uri>
/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences/CF18efdb3c81c340b99016fdad50caae73
</Uri>
<SubresourceUris />
</Conference>
<Conference>
<Sid>CFb6d69ceac34c407d847558a21f57f0bc</Sid>
<DateCreated>Tue, 10 May 2016 23:20:01 +0500</DateCreated>
<DateUpdated>Tue, 10 May 2016 23:20:24 +0500</DateUpdated>
<AccountSid>ACae6e420f425248d6a26948c17a9e2acf</AccountSid>
<Status>RUNNING_MODERATOR_PRESENT</Status>
<StartTime />
<EndTime />
<ApiVersion>2012-04-24</ApiVersion>
<FriendlyName>ConferenceApp</FriendlyName>
<Uri>
/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences/CFb6d69ceac34c407d847558a21f57f0bc
</Uri>
<SubresourceUris />
</Conference>
</Conferences>
</object>
</RestcommResponse>
Sample output for http://IP:8080/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences/CF078109d767e64378ad422716e104086d
<RestcommResponse>
<object
class="org.mobicents.servlet.restcomm.entities.ConferenceDetailRecord">
<Conference>
<Sid>CF078109d767e64378ad422716e104086d</Sid>
<DateCreated>Tue, 10 May 2016 23:20:41 +0500</DateCreated>
<DateUpdated>Tue, 10 May 2016 23:21:19 +0500</DateUpdated>
<AccountSid>ACae6e420f425248d6a26948c17a9e2acf</AccountSid>
<Status>RUNNING_MODERATOR_PRESENT</Status>
<StartTime />
<EndTime />
<ApiVersion>2012-04-24</ApiVersion>
<FriendlyName>ConferenceApp</FriendlyName>
<Uri>
/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences/CF078109d767e64378ad422716e104086d
</Uri>
<SubresourceUris />
</Conference>
</object>
</RestcommResponse>
Participants API
Sample output of http://IP:8080/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences/CF078109d767e64378ad422716e104086d/Participants
<RestcommResponse>
<Calls page="0" numpages="0" pagesize="50" total="0" start="0"
end="5"
uri="/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences/CF078109d767e64378ad422716e104086d/Participants"
firstpageuri="/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences/CF078109d767e64378ad422716e104086d/Participants?Page=0&PageSize=50"
previouspageuri="null" nextpageuri="null"
lastpageuri="/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences/CF078109d767e64378ad422716e104086d/Participants?Page=0&PageSize=50">
<Call>
<Sid>CA516762ff78744e829a42fe27012e83ce</Sid>
<InstanceId>ID8464c16ae8cb4336a7c75a8037d8ceb6</InstanceId>
<DateCreated>Tue, 10 May 2016 23:20:48 +0500</DateCreated>
<DateUpdated>Tue, 10 May 2016 23:20:54 +0500</DateUpdated>
<ParentCallSid />
<AccountSid>ACae6e420f425248d6a26948c17a9e2acf</AccountSid>
<To>1111</To>
<From>alice</From>
<PhoneNumberSid />
<Status>completed</Status>
<StartTime>2016-05-10T23:20:48.658+05:00</StartTime>
<EndTime>2016-05-10T23:20:54.907+05:00</EndTime>
<Duration>6</Duration>
<Price>0.00</Price>
<PriceUnit>USD</PriceUnit>
<Direction>inbound</Direction>
<AnsweredBy />
<ApiVersion>2012-04-24</ApiVersion>
<ForwardedFrom />
<CallerName>Unknown</CallerName>
<Uri>
/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA516762ff78744e829a42fe27012e83ce
</Uri>
<SubresourceUris>
<Notifications>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA516762ff78744e829a42fe27012e83ce/Notifications
</Notifications>
<Recordings>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA516762ff78744e829a42fe27012e83ce/Recordings
</Recordings>
</SubresourceUris>
<Ring__duration />
</Call>
<Call>
<Sid>CA82ad41fcf51d4f2398aefbb990116298</Sid>
<InstanceId>ID8464c16ae8cb4336a7c75a8037d8ceb6</InstanceId>
<DateCreated>Tue, 10 May 2016 23:20:45 +0500</DateCreated>
<DateUpdated>Tue, 10 May 2016 23:21:21 +0500</DateUpdated>
<ParentCallSid />
<AccountSid>ACae6e420f425248d6a26948c17a9e2acf</AccountSid>
<To>1111</To>
<From>alice</From>
<PhoneNumberSid />
<Status>completed</Status>
<StartTime>2016-05-10T23:20:45.557+05:00</StartTime>
<EndTime>2016-05-10T23:21:21.066+05:00</EndTime>
<Duration>35</Duration>
<Price>0.00</Price>
<PriceUnit>USD</PriceUnit>
<Direction>inbound</Direction>
<AnsweredBy />
<ApiVersion>2012-04-24</ApiVersion>
<ForwardedFrom />
<CallerName>Unknown</CallerName>
<Uri>
/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA82ad41fcf51d4f2398aefbb990116298
</Uri>
<SubresourceUris>
<Notifications>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA82ad41fcf51d4f2398aefbb990116298/Notifications
</Notifications>
<Recordings>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA82ad41fcf51d4f2398aefbb990116298/Recordings
</Recordings>
</SubresourceUris>
<Ring__duration />
</Call>
<Call>
<Sid>CA92d057f6df1b48d1b983c850b7f9a99d</Sid>
<InstanceId>ID8464c16ae8cb4336a7c75a8037d8ceb6</InstanceId>
<DateCreated>Tue, 10 May 2016 23:20:41 +0500</DateCreated>
<DateUpdated>Tue, 10 May 2016 23:21:10 +0500</DateUpdated>
<ParentCallSid />
<AccountSid>ACae6e420f425248d6a26948c17a9e2acf</AccountSid>
<To>1111</To>
<From>alice</From>
<PhoneNumberSid />
<Status>completed</Status>
<StartTime>2016-05-10T23:20:41.847+05:00</StartTime>
<EndTime>2016-05-10T23:21:10.268+05:00</EndTime>
<Duration>28</Duration>
<Price>0.00</Price>
<PriceUnit>USD</PriceUnit>
<Direction>inbound</Direction>
<AnsweredBy />
<ApiVersion>2012-04-24</ApiVersion>
<ForwardedFrom />
<CallerName>Unknown</CallerName>
<Uri>
/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA92d057f6df1b48d1b983c850b7f9a99d
</Uri>
<SubresourceUris>
<Notifications>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA92d057f6df1b48d1b983c850b7f9a99d/Notifications
</Notifications>
<Recordings>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA92d057f6df1b48d1b983c850b7f9a99d/Recordings
</Recordings>
</SubresourceUris>
<Ring__duration />
</Call>
<Call>
<Sid>CAb489d5586a834fe3bfc0fb3489f6760a</Sid>
<InstanceId>ID8464c16ae8cb4336a7c75a8037d8ceb6</InstanceId>
<DateCreated>Tue, 10 May 2016 23:21:15 +0500</DateCreated>
<DateUpdated>Tue, 10 May 2016 23:21:22 +0500</DateUpdated>
<ParentCallSid />
<AccountSid>ACae6e420f425248d6a26948c17a9e2acf</AccountSid>
<To>1111</To>
<From>alice</From>
<PhoneNumberSid />
<Status>completed</Status>
<StartTime>2016-05-10T23:21:15.743+05:00</StartTime>
<EndTime>2016-05-10T23:21:22.669+05:00</EndTime>
<Duration>6</Duration>
<Price>0.00</Price>
<PriceUnit>USD</PriceUnit>
<Direction>inbound</Direction>
<AnsweredBy />
<ApiVersion>2012-04-24</ApiVersion>
<ForwardedFrom />
<CallerName>Unknown</CallerName>
<Uri>
/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CAb489d5586a834fe3bfc0fb3489f6760a
</Uri>
<SubresourceUris>
<Notifications>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CAb489d5586a834fe3bfc0fb3489f6760a/Notifications
</Notifications>
<Recordings>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CAb489d5586a834fe3bfc0fb3489f6760a/Recordings
</Recordings>
</SubresourceUris>
<Ring__duration />
</Call>
<Call>
<Sid>CAde9ee02edef249de81b105f5b400c57f</Sid>
<InstanceId>ID8464c16ae8cb4336a7c75a8037d8ceb6</InstanceId>
<DateCreated>Tue, 10 May 2016 23:21:02 +0500</DateCreated>
<DateUpdated>Tue, 10 May 2016 23:21:08 +0500</DateUpdated>
<ParentCallSid />
<AccountSid>ACae6e420f425248d6a26948c17a9e2acf</AccountSid>
<To>1111</To>
<From>alice</From>
<PhoneNumberSid />
<Status>completed</Status>
<StartTime>2016-05-10T23:21:02.765+05:00</StartTime>
<EndTime>2016-05-10T23:21:08.267+05:00</EndTime>
<Duration>5</Duration>
<Price>0.00</Price>
<PriceUnit>USD</PriceUnit>
<Direction>inbound</Direction>
<AnsweredBy />
<ApiVersion>2012-04-24</ApiVersion>
<ForwardedFrom />
<CallerName>Unknown</CallerName>
<Uri>
/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CAde9ee02edef249de81b105f5b400c57f
</Uri>
<SubresourceUris>
<Notifications>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CAde9ee02edef249de81b105f5b400c57f/Notifications
</Notifications>
<Recordings>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CAde9ee02edef249de81b105f5b400c57f/Recordings
</Recordings>
</SubresourceUris>
<Ring__duration />
</Call>
</Calls>
</RestcommResponse>
Sample output for: http://IP:8080/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Conferences/CF078109d767e64378ad422716e104086d/Participants/CAde9ee02edef249de81b105f5b400c57f
<RestcommResponse>
<Call>
<Sid>CAde9ee02edef249de81b105f5b400c57f</Sid>
<InstanceId>ID8464c16ae8cb4336a7c75a8037d8ceb6</InstanceId>
<DateCreated>Tue, 10 May 2016 23:21:02 +0500</DateCreated>
<DateUpdated>Tue, 10 May 2016 23:21:08 +0500</DateUpdated>
<ParentCallSid />
<AccountSid>ACae6e420f425248d6a26948c17a9e2acf</AccountSid>
<To>1111</To>
<From>alice</From>
<PhoneNumberSid />
<Status>completed</Status>
<StartTime>2016-05-10T23:21:02.765+05:00</StartTime>
<EndTime>2016-05-10T23:21:08.267+05:00</EndTime>
<Duration>5</Duration>
<Price>0.00</Price>
<PriceUnit>USD</PriceUnit>
<Direction>inbound</Direction>
<AnsweredBy />
<ApiVersion>2012-04-24</ApiVersion>
<ForwardedFrom />
<CallerName>Unknown</CallerName>
<Uri>
/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CAde9ee02edef249de81b105f5b400c57f
</Uri>
<SubresourceUris>
<Notifications>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CAde9ee02edef249de81b105f5b400c57f/Notifications
</Notifications>
<Recordings>
/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CAde9ee02edef249de81b105f5b400c57f/Recordings
</Recordings>
</SubresourceUris>
<Ring__duration />
</Call>
</RestcommResponse>
added test data in testsuit
added basic test cases for conference
What is remaining?
- remove StartTime and EndTime fro conference API, as these are not in twilio conference: this is a very short one.
- Muted, StartConferenceOnEnter and EndConferenceOnExit are missing from participants API.
- remove extra attributes which are not in twilio participant
- add more test cases specially for participants..
- fix test cases for other features like total calls in CDRS (TestCallsEnpoint) are now more than expected bcz we added calls for conference.
- solution for "why conference never goes to completed state" discussed with @gvagenas as well.
- add upgrade sql script for DB related modifications
- ascii docs for the feature
from restcomm-connect.
Great progress @maria-farooq , well done !
I just wanted to ask, on the Participants API, why all participants (calls) have status Completed? Status should be "InProgress" there, right?
George
from restcomm-connect.
Thanks @gvagenas
these are calls from "completed conference" so call status is correct.
problem is with conference status as i described in point 6 of remaining work.
I debugged the code for this issue and found a strange thing about this line, it never returns true! strange!
from restcomm-connect.
@maria-farooq so one issue is that the Conference status stays at "RUNNING_MODERATOR_PRESENT" even when the Conference is over and you are investigating this one, right?
About the Participants API, I thought that we have Participants only during the Conference is running, when the Conference is done and all Participants leave the conf room, the Participants API should return empty. At that point we should check the Calls API to get the CDRs in order to check which calls were in a given Conference, right? Do I miss something?
from restcomm-connect.
Conference status stays at "RUNNING_MODERATOR_PRESENT" even when the Conference is over, right?
Yes
and you are investigating this one
Well i did, found where the issue is, but not dig further to fix it.
About the Participants API, I thought that we have Participants only during the Conference is running, when the Conference is done and all Participants leave the conference room, the Participants API should return empty.
I did not understood it like this, so this is new for me, but you are right as "Participants should represents the set of calls currently connected to a particular conference.".
At that point (when all participants left the conference) we should check the Calls API to get the CDRs in order to check which calls were in a given Conference, right?
yes by adding query parameter like this:
http://IP:8080/restcomm/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls?conferenceSid=CFb6d69ceac34c407d847558a21f57f0bc
Do I miss something?
No, you enlighten a point which i missed.
from restcomm-connect.
Great @maria-farooq , thanks for the clarifications. You are one the right direction
from restcomm-connect.
so should i fix conference state issue and then proceed with it. what do you suggest
from restcomm-connect.
@maria-farooq yes, sounds like a good plan
from restcomm-connect.
point 2 in remaining work
Muted, StartConferenceOnEnter and EndConferenceOnExit are missing from participants API.
we will need this information persisted somewhere, can be in call_details_record table, we can add new columns in it
from restcomm-connect.
You mean the Call record in the call_details_record table should have this columns also, so the Call record has these flags?
from restcomm-connect.
These flags are needed for each participant as mentioned here
for us, "calls" are "participants"
but this information is very specific to conference calls only, for rest these columns would go null.
from restcomm-connect.
I see, ok proceed like this @maria-farooq
from restcomm-connect.
Hi @gvagenas I investigated "conference state issue" further but have not found solution yet, will look into it again after work.
from restcomm-connect.
New Discovery
FinishConferencing is never called for ConferenceStateChanged
Possible Impacts?
- ConferenceStateChanged.State.COMPLETED is not caught which is why conference remain in old state.
- VoiceInterpreter wont know that conference is completed so it wont call DestroyConference and thus there is chance that some resources don't get cleaned up
Solution?
Tested and pull request created #1071
from restcomm-connect.
Progress since last comment
Serial No | Remaining Work | Status | Comments |
---|---|---|---|
1. | solution for "why conference never goes to completed state" | Done | - |
2. | remove StartTime and EndTime from conference API | Done | - |
3. | Muted, StartConferenceOnEnter and EndConferenceOnExit are missing from participants API. | Done | - |
4. | Show empty if conference is over and remove extra attributes which are not in twilio participant | Done | - |
5. | Mute / Unmute participants | inProgress | my idea is to send mute/unmute message to Call actor |
6. | add test cases for (un)mute participants.. | Pending | - |
7. | fix test cases for other features like total calls in CDRS (TestCallsEnpoint) | Pending | - |
8. | add upgrade sql script for DB related modifications | Pending | - |
9. | ascii docs for the feature | Pending | - |
from restcomm-connect.
Thanks @maria-farooq for the update.
from restcomm-connect.
Hi @gvagenas,
Here are my changes for mute/unmute functionality 80178d8
But i am seeing “RTCP Packet decoding falsed” in mediaserver logs, now i am downloading wireshark to debug it further
from restcomm-connect.
@maria-farooq as I told you on gitter, If you hit a wall debugging that, update the PR or create a new PR and attach the logs for me to check
also you can check how Restcomm currently mutes/unmutes calls at VoiceInterpreter conferencing state. If you dial a conference with startConferenceOnEnter=false (1111), Restcomm will put the call in the conference and will mute it also. You can call number 1310 which will put call muted, and play music, and from a different sip client call 1311 to unmute all participants and stop music
from restcomm-connect.
Problem:
code changes are in this method: https://github.com/RestComm/Restcomm-Connect/pull/991/files#diff-4edb5fb66002dc96d4ba5d2e6ac4ca33R250
When a conference is first started I try to mute one participant:
Result? call get muted.
But: i get following exception in server logs:
23:13:52,299 INFO [org.mobicents.servlet.restcomm.mscontrol.mgcp.MmsCallController] (RestComm-akka.actor.default-dispatcher-40) ********** MmsCallController Current State: "active
23:13:52,300 INFO [org.mobicents.servlet.restcomm.mscontrol.mgcp.MmsCallController] (RestComm-akka.actor.default-dispatcher-40) ********** MmsCallController Processing Message: "org.mobicents.servlet.restcomm.mscontrol.messages.Mute sender : class akka.actor.RepointableActorRef
23:13:52,300 INFO [org.mobicents.servlet.restcomm.mgcp.Connection] (RestComm-akka.actor.default-dispatcher-40) ********** Connection Current State: open
23:13:52,301 INFO [org.mobicents.servlet.restcomm.http.SecuredEndpoint] (http-/172.20.10.2:8080-6) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 4.5 updateCall else $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
23:13:52,301 INFO [org.mobicents.servlet.restcomm.http.SecuredEndpoint] (http-/172.20.10.2:8080-6) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 6 updateCall done $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
23:13:52,301 INFO [org.mobicents.servlet.restcomm.mgcp.Connection] (RestComm-akka.actor.default-dispatcher-42) ********** Connection Processing Message: org.mobicents.servlet.restcomm.mgcp.UpdateConnection
23:13:52,883 INFO [org.mobicents.servlet.restcomm.mgcp.Connection] (RestComm-akka.actor.default-dispatcher-39) ********** Connection Current State: modifying
23:13:52,883 INFO [org.mobicents.servlet.restcomm.mgcp.Connection] (RestComm-akka.actor.default-dispatcher-39) ********** Connection Processing Message: akka.actor.ReceiveTimeout$
23:13:52,884 INFO [org.mobicents.servlet.restcomm.mscontrol.mgcp.MmsCallController] (RestComm-akka.actor.default-dispatcher-39) ********** MmsCallController Current State: "muting
23:13:52,885 ERROR [org.mobicents.servlet.restcomm.mgcp.Connection] (RestComm-akka.actor.default-dispatcher-39) The media gateway failed to respond in the requested timout period.
23:13:52,885 INFO [org.mobicents.servlet.restcomm.mscontrol.mgcp.MmsCallController] (RestComm-akka.actor.default-dispatcher-39) ********** MmsCallController Processing Message: "org.mobicents.servlet.restcomm.mgcp.ConnectionStateChanged sender : class akka.actor.LocalActorRef
23:13:52,885 INFO [org.mobicents.servlet.restcomm.mgcp.Connection] (RestComm-akka.actor.default-dispatcher-39) ********** Connection Current State: closed
23:13:52,886 INFO [org.mobicents.servlet.restcomm.mgcp.Connection] (RestComm-akka.actor.default-dispatcher-39) ********** Connection Processing Message: org.mobicents.servlet.restcomm.mgcp.CloseConnection
23:13:52,886 ERROR [org.mobicents.servlet.restcomm.mgcp.Connection] (RestComm-akka.actor.default-dispatcher-39) No transition could be found from a(n) closed state to a(n) closing state.: org.mobicents.servlet.restcomm.fsm.TransitionNotFoundException: No transition could be found from a(n) closed state to a(n) closing state.
at org.mobicents.servlet.restcomm.fsm.FiniteStateMachine.transition(FiniteStateMachine.java:60) [restcomm.commons-7.7.0-SNAPSHOT.jar:]
at org.mobicents.servlet.restcomm.mgcp.Connection.onReceive(Connection.java:184) [restcomm.mgcp-7.7.0-SNAPSHOT.jar:]
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:159) [akka-actor_2.10-2.1.2.jar:]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425) [akka-actor_2.10-2.1.2.jar:]
at akka.actor.ActorCell.invoke(ActorCell.scala:386) [akka-actor_2.10-2.1.2.jar:]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230) [akka-actor_2.10-2.1.2.jar:]
at akka.dispatch.Mailbox.run(Mailbox.scala:212) [akka-actor_2.10-2.1.2.jar:]
at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:506) [akka-actor_2.10-2.1.2.jar:]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262) [scala-library-2.10.1.jar:]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975) [scala-library-2.10.1.jar:]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478) [scala-library-2.10.1.jar:]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104) [scala-library-2.10.1.jar:]
Next step:
as guided by @gvagenas
Problem seems to be MGCP timeout, that mean Restcomm send the MGCP request to media server but there was no response from media server:
23:13:52,883 INFO [org.mobicents.servlet.restcomm.mgcp.Connection] (RestComm-akka.actor.default-dispatcher-39) ********** Connection Current State: modifying
23:13:52,883 INFO [org.mobicents.servlet.restcomm.mgcp.Connection] (RestComm-akka.actor.default-dispatcher-39) ********** Connection Processing Message: akka.actor.ReceiveTimeout$
23:13:52,884 INFO [org.mobicents.servlet.restcomm.mscontrol.mgcp.MmsCallController] (RestComm-akka.actor.default-dispatcher-39) ********** MmsCallController Current State: "muting
23:13:52,885 ERROR [org.mobicents.servlet.restcomm.mgcp.Connection] (RestComm-akka.actor.default-dispatcher-39) The media gateway failed to respond in the requested timout period.
I think that the request that Restcomm created and sent to media server is wrong.
You need to check the media server logs, check $RESTCOMM_HOME/mediaserver/logs/server.log (also "screen -r mms") and also tcpdump traces. For the tcpdump traces run "tcpdump -i any -w TRACE_FILENAME.pcap"
Check the logs and tcpdump to see why the Restcomm MGCP request failed on the media server side.
from restcomm-connect.
here are media server logs:
2016-05-31 11:46:23,757 ERROR [RtcpPacket] (service-scheduler-7) Received type = 205 RTCP Packet decoding falsed. offSet = 80. Packet count = 2
2016-05-31 11:46:28,178 ERROR [RtcpPacket] (service-scheduler-4) Received type = 205 RTCP Packet decoding falsed. offSet = 80. Packet count = 2
2016-05-31 11:46:31,792 ERROR [RtcpPacket] (service-scheduler-1) Received type = 205 RTCP Packet decoding falsed. offSet = 80. Packet count = 2
2016-05-31 11:46:32,563 INFO [MgcpTransaction] (service-scheduler-8) tx=147483691 Started, message= MDCX mobicents/bridge/[email protected]:2427, call agent = /172.20.10.2:2727
2016-05-31 11:46:32,724 WARN [JitterBuffer] (service-scheduler-1) Buffer overflow!
2016-05-31 11:46:32,745 WARN [JitterBuffer] (service-scheduler-6) Buffer overflow!
2016-05-31 11:46:32,764 WARN [JitterBuffer] (service-scheduler-2) Buffer overflow!
2016-05-31 11:46:32,785 WARN [JitterBuffer] (service-scheduler-8) Buffer overflow!
2016-05-31 11:46:32,806 WARN [JitterBuffer] (service-scheduler-7) Buffer overflow!
2016-05-31 11:46:32,825 WARN [JitterBuffer] (service-scheduler-4) Buffer overflow!
2016-05-31 11:46:32,846 WARN [JitterBuffer] (service-scheduler-2) Buffer overflow!
2016-05-31 11:46:32,864 WARN [JitterBuffer] (service-scheduler-4) Buffer overflow!
.
.
<overflow continuous for while here>
.
.
2016-05-31 11:46:41,145 WARN [JitterBuffer] (service-scheduler-3) Buffer overflow!
2016-05-31 11:46:41,165 WARN [JitterBuffer] (service-scheduler-7) Buffer overflow!
2016-05-31 11:46:41,186 WARN [JitterBuffer] (service-scheduler-3) Buffer overflow!
2016-05-31 11:46:41,206 WARN [JitterBuffer] (service-scheduler-2) Buffer overflow!
2016-05-31 11:46:41,224 WARN [JitterBuffer] (service-scheduler-6) Buffer overflow!
2016-05-31 11:46:41,254 WARN [JitterBuffer] (service-scheduler-8) Buffer overflow!
2016-05-31 11:46:41,265 WARN [JitterBuffer] (service-scheduler-3) Buffer overflow!
2016-05-31 11:46:41,267 INFO [MgcpTransaction] (scheduler-worker-6) tx=147483691 was executed normaly
2016-05-31 11:46:44,755 ERROR [RtcpPacket] (service-scheduler-7) Received type = 205 RTCP Packet decoding falsed. offSet = 80. Packet count = 2
2016-05-31 11:46:51,445 ERROR [RtcpPacket] (service-scheduler-8) Received type = 205 RTCP Packet decoding falsed. offSet = 80. Packet count = 2
2016-05-31 11:46:54,700 INFO [Server] (scheduler-worker-3) Global hearbeat is still alive
2016-05-31 11:46:56,401 ERROR [RtcpPacket] (service-scheduler-6) Received type = 205 RTCP Packet decoding falsed. offSet = 80. Packet count = 2
2016-05-31 11:47:01,167 ERROR [RtcpPacket] (service-scheduler-1) Received type = 205 RTCP Packet decoding falsed. offSet = 80. Packet count = 2
2016-05-31 11:47:07,023 ERROR [RtcpPacket] (service-scheduler-6) Received type = 205 RTCP Packet decoding falsed. offSet = 80. Packet count = 2
2016-05-31 11:47:11,752 ERROR [RtcpPacket] (service-scheduler-2) Received type = 205 RTCP Packet decoding falsed. offSet = 80. Packet count = 2
looking into tcpdump
from restcomm-connect.
from restcomm-connect.
@maria-farooq the pcap trace doesn't contain any sip traffic. Can you check again?
from restcomm-connect.
hi @gvagenas attaching fresh logs,they have confirmed sip traffic.
in mediaserver log
2016-05-31 15:02:57,074 DEBUG [RtpMember] (service-scheduler-2) rtt=3755021041 - 0 - 0 = 3755021041 => 65536ms
2016-05-31 15:02:59,792 DEBUG [MgcpProvider] (service-scheduler-2) Receive message 81 bytes length
2016-05-31 15:02:59,792 DEBUG [MgcpProvider] (service-scheduler-2) Parsing message: MDCX 147483691 mobicents/bridge/[email protected]:2427 MGCP 1.0
C:1
I:5de
M:sendonly
2016-05-31 15:02:59,792 DEBUG [MgcpProvider] (service-scheduler-2) Dispatching message
2016-05-31 15:02:59,792 INFO [MgcpTransaction] (service-scheduler-2) tx=147483691 Started, message= MDCX mobicents/bridge/[email protected]:2427, call agent = /172.20.10.2:2727
2016-05-31 15:02:59,919 WARN [JitterBuffer] (service-scheduler-3) Buffer overflow!
2016-05-31 15:02:59,939 WARN [JitterBuffer] (service-scheduler-3) Buffer overflow!
2016-05-31 15:02:59,958 WARN [JitterBuffer] (service-scheduler-2) Buffer overflow!
2016-05-31 15:02:59,979 WARN [JitterBuffer] (service-scheduler-1) Buffer overflow!
and here onward Buffer overflow continuous
from restcomm-connect.
I tried feeding extra memory as well to mediaserver as guided by @hrosa
https://github.com/RestComm/mediaserver/blob/master/bootstrap/src/main/config/run.sh#L137
from restcomm-connect.
@maria-farooq
I can see RMS receives the MUTE request at
2016-05-31 15:02:59,792 DEBUG [MgcpProvider] (service-scheduler-2) Parsing message: MDCX 147483691 mobicents/bridge/[email protected]:2427 MGCP 1.0
C:1
I:5de
M:sendonly
and then again reports the same request but no response
2016-05-31 15:03:03,794 DEBUG [MgcpProvider] (service-scheduler-6) Parsing message: MDCX 147483691 mobicents/bridge/[email protected]:2427 MGCP 1.0
C:1
I:5de
M:sendonly
and again the same request but no response
2016-05-31 15:03:11,794 DEBUG [MgcpProvider] (service-scheduler-4) Parsing message: MDCX 147483691 mobicents/bridge/[email protected]:2427 MGCP 1.0
C:1
I:5de
M:sendonly
After this, there is nothing related to this Request and of course Restcomm will timeout this MGCP request.
There are a lot Buffer Overflow messages that I know are coming from Linphone.
In the past, I had some issues with Linphone and I would like you to make the same test with Jitsi.
Use Jitsi to make a call to a conference room and try to mute Jitsi to check if we have the same MGCP timeout.
If with Jitsi same exception happens we need to check with @hrosa
Thanks
George
from restcomm-connect.
thanks @gvagenas will test with jitsi and update here, meanwhile
from restcomm-connect.
@gvagenas @hrosa problems is faced even with jitsi
from restcomm-connect.
@maria-farooq please open issue on Media Server repo and link it to this one. Thank you.
from restcomm-connect.
@hrosa RestComm/media-core#165 created
Thanks
from restcomm-connect.
PR reviewed and merged . Great job @maria-farooq
from restcomm-connect.
Related Issues (20)
- Implement Organization Sign Up Backend
- Remove/Reduce references to Restcomm for Whitelabeling
- Calls with duration over 1h don't show properly in Calls logs
- Allow downloading Recordings from Call details popup
- use Cloudhopper DLR parser
- Provide sorting in the backend for Calls Endpoint
- Double-byte encoded incoming SMS message gets corrupted
- Long messages get split incorrectly HOT 1
- Fail To Start Restcomm
- Restcomm-Connect-8.7.1-25 TCP connections are left in CLOSE_WAIT mode
- Shell scripts does not support self-closing XML at SMTP HOT 1
- RouteSelectFailureSpecificInfoImpl toString curley bracket
- visual-designer.war not found error when building from source
- Wrong handling of collect prompt number of digits
- SIP MESAGE to the outbound proxy which requires authentication
- NIST stack custom logger "gov.nist.javax.sip.STACK_LOGGER" provides class context HOT 1
- JAIN SIP HA CORE support for UAS CANCEL transaction
- restcomm jain-sip-ha-hazelcast-backend upgrade to hazelcast version 4.1.1
- ArrayIndexOutOfBoundException
- Open Source Software Stack for 3G
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from restcomm-connect.