Open in
Ühenda Twiliost
Suuna Twilio kõned CallSidi abil SIP-i kaudu ThunderPhone’i agendile ning võta need referUrl-i kaudu tagasi, kus üleandmine toimub edastusaadressis.
Sinu TwiML valib agendi SIP-aadressi, lisades kõne CallSid-i päisesse.
Kui helistaja vajab inimest, saadab agent SIP-i REFER-i, Twilio edastab üleandmist sisaldava edastusaadressi sinu referUrl-i töötlejale ning sinu töötleja tagastatud TwiML määrab, kuhu helistaja suunatakse, näiteks Flexi järjekorda.
Enne alustamist
- ThunderPhone'i agent ja organisatsiooni API-võti.
- Twilio Programmable Voice ning koht TwiML-i ja
referUrl-i töötleja majutamiseks: sinu enda server või TwiML Bin ja Twilio Function. Flex on valikuline.
1. Loo SIP-i lõpp-punkt
Twilio <Sip> kasutab kasutajanime ja parooli, seega kasuta standardset lõpp-punkti:
curl -X POST https://api.thunderphone.com/v1/sip-endpoints \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"agent_id": 12, "name": "Twilio"}'Salvesta vastusest saadud password kohe; seda näidatakse ainult üks kord. Ainult Twiliost tulevate kõnede vastuvõtmiseks vaata
Piira lähte-IP-aadresse.
2. Saada kõned koos kontekstiga
Tagasta see TwiML kõne jaoks, mille soovid agendile üle anda:
<Response>
<Dial answerOnBridge="true" referUrl="https://YOUR_SERVER/thunderphone-refer">
<Sip username="tp409667538f83" password="YOUR_ENDPOINT_PASSWORD">sip:agent-12-jhxmginwjx@sip.thunderphone.com;transport=tls?X-Call-ID={{CallSid}}</Sip>
</Dial>
</Response>;transport=tlson oluline: Twilio kasutab UDP-d, kui sellele ei öelda teisiti.X-Call-IDkannabCallSid-i. Twilio ei dokumenteeri oma kõne-ID päist, seega lisa see päis: ThunderPhone salvestab selle kõneexternal_call_id-na.{{CallSid}}töötab TwiML Bin-is; oma serverist kirjuta sissetuleva päringuCallSid.- Lisa samal viisil rohkem konteksti, näiteks
&X-Account-Id=12345. TwiML-is kirjuta&kujul&, sest eraldiseisev&ei ole kehtiv XML. Igaüks jõuab viibani muutujana, siin{{sip_x_account_id}}. Twilio lubabx-päiseid jaUser-to-User-i protsendikodeerituna, kusjuures kogu URI on alla 255 tähemärgi ja päised alla 1 024 tähemärgi. referUrlvõimaldab Twiliol agendiREFER-i vastu võtta; ilma selleta edastus nurjub veaga 13802.answerOnBridge="true"hoiab helistaja ühendatuna, kuni uus sihtkoht vastab, nii et nurjunud edastuse korral saab kasutada varuvarianti.
Studio vidin Ühenda kõne aadressile ei dokumenteeri kohandatud päiseid ega referUrl-i, seega anna Studio kaudu kõne sellele TwiML-ile üle, näiteks vidinaga TwiML-i ümbersuunamine.
3. Võta kõne tagasi
Häälagent suunab kõne REFER-iga, mille suunamisaadress sisaldab üleandmise
ID-d ja eesmärki. Lisa see suunamisnumber (vt
Lisa suunamisnumber
ja Päised suunamisaadressis):
{
"name": "Twilio support",
"number": "sip:support@acme.sip.twilio.com",
"headers": {"X-Handoff-Id": "{{handoff_id}}", "X-Handoff-Intent": "{{handoff_intent}}"},
"headers_in_uri": true
}Twilio saadab kogu aadressi sinu referUrl-ile kui ReferTransferTarget, näiteks
<sip:support@acme.sip.twilio.com?X-Handoff-Id=Zr3mY0b1Q9xWw2kPq4s7Tg&X-Handoff-Intent=billing_dispute>.
Sinu töötleja loeb sellest päised välja ja tagastab TwiML-i, mis määrab, kuhu
helistaja järgmisena suunatakse. Aadressi kasutajaosa (support) saad ise
valida, seega saad lisada iga sihtkoha jaoks ühe suunamisnumbri ja selle järgi
marsruutida.
See Twilio Function lisab helistaja Flexi järjekorda koos üleandmisega ülesande
atribuutidena ja otsib kokkuvõtte üleandmise ID järgi. Otsing toimub
Functionis, sest Studio HTTP Requesti vidin ei saa saata Authorization
päist:
exports.handler = async (context, event, callback) => {
const target = (event.ReferTransferTarget || "").replace(/^<|>$/g, "");
const params = new URLSearchParams(target.split("?")[1] || "");
const handoffId = params.get("X-Handoff-Id") || "";
const attributes = { handoff_id: handoffId, intent: params.get("X-Handoff-Intent") || "" };
if (handoffId) {
const response = await fetch(
"https://api.thunderphone.com/v1/calls/handoff?handoff_id=" + encodeURIComponent(handoffId),
{ headers: { Authorization: "Bearer " + context.THUNDERPHONE_API_KEY } }
);
if (response.ok) {
const call = await response.json();
attributes.summary = (call.handoff && call.handoff.summary) || "";
}
}
const twiml = new Twilio.twiml.VoiceResponse();
twiml.enqueue({ workflowSid: context.FLEX_WORKFLOW_SID }).task({}, JSON.stringify(attributes));
callback(null, twiml);
};Hoia API-võtit Functioni keskkonnamuutujates. Muude väljade kohta vaata Üleantud kõne otsimine.
Testi seda
Helista Twilio numbrile, mis tagastab ülaltoodud TwiML-i, palu häälagendil
ühendada sind inimesega ning kontrolli, et sinu referUrl-i töötleja saab
mõlema päisega ReferTransferTarget-i ja et helistaja jõuab järjekorda. Seejärel ava kõne käsuga
GET /v1/calls/{call_id}: external_call_id peaks olema CallSid.
Piirangud
- Twilio piirab
Refer-Topikkuse 256 tähemärgiga. ThunderPhone hoiab aadressi pikkuse 254 tähemärgil ja jätab välja päise, mis ei mahu ära, seega hoia päiste nimed ja väärtused lühikesed. - Twilio ei dokumenteeri päiste lugemist
BYE-l, seega ei saa tagasisuunamine üleandmist Twiliosse tagasi kaasa võtta. Kasuta ülaltoodud viisilREFER-i. - Twilio ei aktsepteeri
REFER-i kõnel, mis on ühendatud<Conference>või<Queue>kaudu, seega vali häälagent ülaltoodud viisil<Dial><Sip>-iga.