Summary: | ASTERISK-21453: New SIP Channel Driver - Implement CCSS | ||||||||
Reporter: | Matt Jordan (mjordan) | Labels: | Asterisk12 NewSIP | ||||||
Date Opened: | 2013-04-16 11:49:15 | Date Closed: | |||||||
Priority: | Major | Regression? | No | ||||||
Status: | Open/New | Components: | Channels/chan_pjsip | ||||||
Versions: | Frequency of Occurrence | ||||||||
Related Issues: |
| ||||||||
Environment: | Attachments: | ||||||||
Description: | Inclusion of Call Completion Supplementary Services requires the Publication APIs drafted on the Asterisk wiki. See [Event Subscription and Publication Design page|https://wiki.asterisk.org/wiki/display/AST/Event+Subscription+and+Publication+Design] and ASTERISK-21452 for more information.
This task is to add CCSS support for {{chan_gulp}}. This should include all of the CCSS types supported by Asterisk - Call Completion Busy Subscriber (CCBS), Call Completion No Response (CCNR), and Call Completion Not Logged In (CCNL). *NOTE* CCSS was implemented relatively recently in {{chan_sip}} (Asterisk 1.8) and much of it can be ported over to {{chan_gulp}}. The primary points of change will be the interaction with the SIP stack - however, the interaction with the CCSS core should be able to be used relatively unchanged. At a minimum, this entails: * Create a new resource module that registers itself as an Event Publication Agent for events "call-completion", media-type "application/call-completion". * Add the ability to send SIP NOTIFY requests with the appropriate event package for CCSS * Register the module as a call completion agent via {{ast_cc_agent_register}}. ** During an {{init}} callback, register the channel as a channel that is attempting call completion. ** During a {{start_offer_timer}} callback, schedule a callback that will automatically fail the call completion if fired. ** During a {{stop_offer_timer}} callback, cancel the scheduled callback created in {{start_offer_timer}} ** During a {{respond}} callback, respond with either a 200 OK to the pending request or an appropriate error code. This should also send a SIP NOTIFY request containing the CCSS event package. ** During a {{status_request}} callback, convert the agent's status to a device state and return the appropriate value. ** During a {{start_monitoring}} callback, punt. ** During a {{callee_available}} callback, * Register the module to monitor call completion via {{sip_cc_monitor_callbacks}}. ** In a {{request_cc}} callback, create a new SUBSCRIBE request for the specified URI. This *must* schedule a callback for {{ast_cc_available_timer_expire}}. ** In a {{suspend}} callback, PUBLISH a CC event as 'closed' ** In an {{unsuspend}} callback, PUBLISH a CC event as 'open' ** In a {{cancel_available_timer}} callback, cancel the monitoring. This should cancel the subscription for {{ast_cc_available_timer_expire}}. * Add checks for CCNR when we get a 18x response to a SIP INVITE * Add checks for CCBS when we get a 486, 600, or 603 response to a SIP INVITE | ||||||||
Comments: |