PLIVO to FREEPBX & Asterisk Trunking
The important thing to remember is that Heroku or the Endpoint /Trunk apps can be hosted or static XML. Plivo relies on the XML to know what you want it to do. Plivo DOES NOT send DID over the registration /trunk.
You've probably used the Plivo Inbound Trunk or Outbound trunk articles.. They only tell part of the story with a little help from Plivo Support we came up with this:
Plivo Side of the Configuration
Step 1. Create Outbound Application.
The important thing is: http://easytrunk.plivo.com/response/sip/route/?AUTH=SOMESECRETHEREAUTH_USEDINOVERRIDEATBOTTOM
Make Public URI
Step 2. Create Endpoint.
Choose the Outbound Application from Step 1. Save it. Hit Plus and the Username and Secret will be used in Freepbx on the registration strings and Trunk tabs below.
Step 3. Create Inbound Application.
The important thing is the Answer URI which look like:
http://easytrunk.herokuapp.com/response/sip/inbound_trunk/?DESTINATION=sip:USERNAMEHEREFORYOURENDPOINTPAGE@phone.plivo.com&DialMusic=real&
Step 4. Assign Number to Inbound Application
FREEPBX Config
Create a new SIP TRUNK in Freepbx:
Outgoing TRUNK NAME: USERNAMEHEREFORYOURENDPOINTPAGE
username= USERNAMEHEREFORYOURENDPOINTPAGE
secret=SOMESECRETHERE
type=friend
host=phone.plivo.com
context=from-trunk
nat=yes
insecure=very
canreinvite=no
qualify=yes
disallow=all
allow=gsm,ulaw,g722
Incoming Tab:
User context: from-trunk
User details:
type=user
transport=tcp
nat=yes
insecure=very
context=from-trunk
canreinvite=no
qualify=yes
disallow=all
allow=gsm,ulaw,g722
Registration String: USERNAMEHEREFORYOURENDPOINTPAGE:SECRETFORENDPOINT@phone.plivo.com/
Override some Headers!
To do outbound calling you need to override some SIP headers. In Freepbx go to Admin -> config edit and choose the extensions_custom.conf file. Put in this file after changing the username, and the SIPURIHEREFROMTHEOUTBOUNDAPPLICATION retrieve from the Plivo Outbound Application SIP URI.
[macro-dialout-trunk-predial-hook]
exten => s,1,Gotoif($["${custom}" != "SIP/USERNAMEHEREFORYOURENDPOINTPAGE"]?600)
exten => s,2,SIPAddHeader(X-PH-destination: ${ARG2})
exten => s,3,SIPAddHeader(X-PH-clid: ${CALLERID(num)})
exten => s,4,SIPAddHeader(X-PH-auth:SOMESECRETHEREAUTH_USEDINOVERRIDEATBOTTOM)
exten => s,5,SIPAddHeader(X-PH-dial_music: real)
exten => s,6,Dial(sip/SIPURIHEREFROMTHEOUTBOUNDAPPLICATION@app.plivo.com, 30)
exten => s,n(600),MacroExit()
For all your IT needs, or if you have questions feel free to get in contact with us! info@wildcardcorp.com or 715.869.3440!