Differences between revisions 8 and 9
Revision 8 as of 2021-354 05:02:11
Size: 2854
Editor: unn-178-249-214-71
Comment:
Revision 9 as of 2022-198 00:17:59
Size: 2852
Editor: root
Comment:
Deletions are marked like this. Additions are marked like this.
Line 50: Line 50:
 6. Make a domain with any name. Use an IP access control list with the IP `192.99.233.116`  6. Make a domain with any name. Use an IP access control list with the IP `51.161.87.91`

Providing the below SGX services is not free; if you find them useful please consider supporting infrastructure costs on Liberapay, on Patreon, or by becoming a paying customer of JMP.

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 SMS

  1. Go to https://console.twilio.com

  2. Go to Develop > Phone Numbers > Manage > Active Numbers

  3. Click on the phone number you want to add
  4. Go to the Configure tab
  5. Scroll down to 'Messaging' and change 'A message Comes in' to the url  http://twilio.sgx.soprani.ca/sms 

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 51.161.87.91

  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" id="cmd1">
              <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, and send/receive SMS via Cheogram.

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