1 / 26

Making the most of Connected Party Information in Asterisk

Making the most of Connected Party Information in Asterisk. Mark Michelson Software Developer, Digium, Inc. What is Connected Party Information?. ISDN: COLP and CONP SIP: P-Asserted-Identity and Remote-Party-Id "The reverse of Caller*ID" Can be updated throughout the course of a call.

Download Presentation

Making the most of Connected Party Information in Asterisk

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Making the most of Connected Party Information in Asterisk Mark Michelson Software Developer, Digium, Inc.

  2. What is Connected Party Information? • ISDN: COLP and CONP • SIP: P-Asserted-Identity and Remote-Party-Id • "The reverse of Caller*ID" • Can be updated throughout the course of a call

  3. Contributors • Gareth Palmer • Community member from New Zealand • Initial implementation (issue 8824) for chan_sip and chan_skinny, func_connectedline • Richard Mudgett • Digium Software Developer • Core API, chan_misdn, chan_dahdi, libpri • Mark Michelson • Digium Software Developer • chan_sip, app_dial, app_queue, features (transfers, pickup, etc.), interception macros

  4. [Alice]callerid = Alice <11111> [Bob]callerid = Bob <22222> [Carol]callerid = Carol <33333> Configuration example

  5. Alice dials Bob...Alice's Display Bob's Display Bob's phone rings...Alice's Display Bob's Display Alice Calls Bob Prior to 1.6.3 Alice <11111>

  6. Bob preses transfer and calls Carol Bob's Display Carol's Display Alice and Carol are connected. Alice's Display Carol's Display Bob Transfers Alice to Carol prior to 1.6.3 Alice <11111> Bob <22222> Bob <22222>

  7. Alice dials Bob...Alice's Display Bob's Display Bob's phone rings...Alice's Display Bob's Display Alice Calls Bob in 1.6.3+ Bob <22222> Alice <11111>

  8. Bob preses transfer and calls Carol Bob's Display Carol's Display Alice and Carol are connected. Alice's Display Carol's Display Bob Transfers Alice to Carol prior to 1.6.3 Carol <33333> Bob <22222> Carol <33333> Alice <11111>

  9. SIP Technical Details • Read P-Asserted-Identity and Remote-Party-ID headers on incoming messages. • Transmit either P-Asserted-Identity or Remote-Party-ID headers on • Provisional responses to INVITEs • 200 OK responses to INVITEs • Outbound INVITEs • Outbound UPDATEs

  10. SIP configuration settings • sendrpid – Four possible values: • rpid: Use Remote-Party-ID header • pai: Use P-Asserted-Identity header • yes: Same as “rpid” (old old old option) • no: Do not send connected party information • trustrpid – Yes or no option. Tells whether to accept connected party information.

  11. SIP configuration settings, contd. • rpid_immediate – Yes or no setting. Should we generate a provisional response just for communicating updated connected party information? • rpid_update: Yes or no setting. Controls whether connected line updates can be sent in UPDATE requests.

  12. ISDN technical details • Both mISDN and libpri use new IEs • connected-number-ie in CONNECT • Connected name facility (Q.SIG only) • FACILITY and NOTIFY messages used more frequently

  13. ISDN configuration settings • misdn.conf • More type-of-number prefix strings • outgoing_colp: Controls whether to send COLP • 0: Send out COLP unaltered • 1: Force COLP to restricted • 2: Do not send COLP • display_connected: Affects display IE in CONNECT • 0: No COLP/CONP in display IE • 1: CONP in display IE • 2: COLP in display IE • 3: COLP and CONP in display IE

  14. ISDN configuration settings, contd. • misdn.conf, continued • display_setup: Affects display IE in SETUP • 0: No caller information in display IE • 1: Caller name in display IE • 2: Caller number in display IE • 3: Caller name and number in display IE • chan_dahdi.conf: COLP/CONP supported with no new configuration options.

  15. "Just Works" vs. Meticulous Control • "Just works" • callerid setting • Automatically updated on transfer • Meticulous control • new configuration settings • func_connectedline • 'I' option to Dial • Interception macros

  16. func_connectedline • CONNECTEDLINE(parameter[,i]) • Valid Parameters: • name: called name • number: called number • all: called name and number • ton: type of number • pres: called number presentation • The 'i' option: • If present, do not send a message out, only make the change internally.

  17. [default]exten => 4000,1,Set(CONNECTEDLINE(name)=John Smith)exten => 4000,n,Set(CONNECTEDLINE(number)=4000)exten => 4000,n,Set(CONNECTEDLINE(ton)=0)exten => 4000,n,Set(CONNECTEDLINE(pres)=allowed) There are four messages sent to the caller's channel as a result of this! What's wrong with the following dialplan?

  18. [default]; Notice the i in the first three statementsexten => 4000,1,Set(CONNECTEDLINE(name,i)=John Smith)exten => 4000,n,Set(CONNECTEDLINE(number,i)=4000)exten => 4000,n,Set(CONNECTEDLINE(ton,i)=0)exten => 4000,n,Set(CONNECTEDLINE(pres)=allowed) Now only a single message is sent after all parameters are set. Corrected Dialplan example

  19. New option for Dial and Queue • I – Do not overwrite connected party information already set on inbound channel. • Slightly different semantics from not trusting received information • Common dialplan idiom: [default]exten => 4000,1,Set(CONNECTEDLINE(name,i)=John Smith)exten => 4000,n,Set(CONNECTEDLINE(number,i)=4000)exten => 4000,n,Set(CONNECTEDLINE(ton,i)=0)exten => 4000,n,Set(CONNECTEDLINE(pres)=allowed)exten => 4000,n,Dial(SIP/4000,20,I)exten => 4000,n,Hangup

  20. Interception macros • Set through channel variables • CONNECTED_LINE_CALLER_SEND_MACRO • CONNECTED_LINE_CALLER_SEND_MACRO_ARGS • CONNECTED_LINE_CALLEE_SEND_MACRO • CONNECTED_LINE_CALLEE_SEND_MACRO_ARGS • CALLER_SEND macro runs on caller's channel if connected party update is received on callee's channel, for example • Update is automatically sent (so 'i' usage is recommended) • Recommend to prefix channel variables with __

  21. [default]exten => 3000,1,Set(__CONNECTED_LINE_CALLER_SEND_MACRO=add_pfx)exten => 3000,n,Set(__CONNECTED_LINE_CALLER_SEND_MACRO_ARGS=45,4)exten => 3000,n,Dial(SIP/3000,30)exten => 3000,n,Hangup [macro-add_pfx];ARG1 is prefix to add;ARG2 is number of digits at end to add prefix toexten => s,1,Set(NOPREFIX=${CONNECTEDLINE(number):-${ARG2}})exten => s,n,Set(CONNECTEDLINE(number,i)=${ARG1}${NOPREFIX})exten => s,n,MacroExit Interception Macro Example

  22. Ideas for Usage • IVR that updates connected name on each selection made • Disguise the true number of an individual with a generic "company number" • Use interception macros to make outbound connected number E.164 formatted • You can do a lot more in an interception macro than just update connected party info...

  23. Troubleshooting Tips • For CONNECTEDLINE, check for rampant 'i's. • Check channel configuration settings. The default settings may not be what you want or expect. • Check packet captures. Your equipment may not support what Asterisk sends. • As always, bugs should be reported to https://issues.asterisk.org

  24. Addendum: Redirecting • Similar to connected party info, but for forwarded/deflected calls • REDIRECTING dialplan function similar to CONNECTEDLINE • Be certain to read CHANGES file for some gotchas with ISDN

  25. Future Development Ideas • Manager Events • RECV variants of interception macros • Update other channel drivers • Interception macro makeover

  26. I bet you have questions, now...

More Related