Differences between revisions 3 and 4
Revision 3 as of 2021-246 17:48:41
Size: 802
Editor: Singpolyma
Comment:
Revision 4 as of 2021-246 18:48:10
Size: 2217
Editor: Singpolyma
Comment: Initial hack for outbound voice
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:

== Outbound Calls ==

 1. In Twilio, go to `Develop > Explore Products > Functions`
 2. Make a new function with any name, use this code:
    {{{
exports.handler = function(context, event, callback) {
  let twiml = new Twilio.twiml.VoiceResponse();
  if(event.From != "SIP URI FROM INBOUND SECTION ABOVE") {
    console.log("Bad from: " + event.From);
    twiml.hangup();
  } else {
    let tel = event.To.split("@")[0].replace(/^sip:/, "");
    twiml.dial({ callerId: "YOUR TWILIO NUMBER" }).number(tel);
  }

  return callback(null, twiml);
};
    }}}
 3. Save and "Deploy all" -- make a note of the function's domain name
 4. In Twilio, go to `Develop > Explore Products > Voice`
 5. In the sidebar under Manage pick SIP domains
 6. Make a domain with any name. Use an IP access control list with the IP `192.99.233.116`
 7. Set "A call comes in" webhook to `https://<function domain>/<function path>`
 8. Save
 9. Open Gajim or another client that support XML console and sent this XML in the console:

    {{{
<iq to="cheogram.com" type="set">
 <command xmlns="http://jabber.org/protocol/commands" node="sip-proxy-set">
  <x xmlns="jabber:x:data">
   <field var="sip-proxy">
    <value>YOUR TWILIO SIP DOMAIN</value>
   </field>
  </x>
 </command>
</iq>
    }}}
 10. Disconnect and reconnect your Jabber account, you should now be able to place voice calls via Cheogram

Run the register command on cheogram.com and enter gateway twilio.sgx.soprani.ca or chat with xmpp:cheogram.com bot and say register twilio.sgx.soprani.ca

Source: https://github.com/pesvut/sgx-twilio

Inbound Calls

  1. In Twilio, go to Develop > Explore Products > Elastic SIP Trunking and create a new trunk with any name.

  2. In your new trunk go to Origination settings
  3. Add a SIP URI: sip:user%5C40domain.tld%40cheogram.com@sip.cheogram.com (replace user with your Jabber ID localpart and domain.tld with your Jabber ID domainpart)

  4. In the left panel under your trunk go to Numbers
  5. Top-right Add a number > Add an existing number and choose your number

Incoming calls to that number will now ring you on Jingle.

Outbound Calls

  1. In Twilio, go to Develop > Explore Products > Functions

  2. Make a new function with any name, use this code:
    • exports.handler = function(context, event, callback) {
        let twiml = new Twilio.twiml.VoiceResponse();
        if(event.From != "SIP URI FROM INBOUND SECTION ABOVE") {
          console.log("Bad from: " + event.From);
          twiml.hangup();
        } else {
          let tel = event.To.split("@")[0].replace(/^sip:/, "");
          twiml.dial({ callerId: "YOUR TWILIO NUMBER" }).number(tel);
        }
      
        return callback(null, twiml);
      };
  3. Save and "Deploy all" -- make a note of the function's domain name
  4. In Twilio, go to Develop > Explore Products > Voice

  5. In the sidebar under Manage pick SIP domains
  6. Make a domain with any name. Use an IP access control list with the IP 192.99.233.116

  7. Set "A call comes in" webhook to https://<function domain>/<function path>

  8. Save
  9. Open Gajim or another client that support XML console and sent this XML in the console:
    • <iq to="cheogram.com" type="set">
              <command xmlns="http://jabber.org/protocol/commands" node="sip-proxy-set">
                      <x xmlns="jabber:x:data">
                              <field var="sip-proxy">
                                      <value>YOUR TWILIO SIP DOMAIN</value>
                              </field>
                      </x>
              </command>
      </iq>
  10. Disconnect and reconnect your Jabber account, you should now be able to place voice calls via Cheogram

TwilioSetup (last edited 2022-198 00:17:59 by root)