Begrepp för inkommande samtal

Med Samtalsautomation för Azure Communication Services kan utvecklare skapa program som kan ringa och ta emot samtal. Det utnyttjar Event Grid-prenumerationer för att leverera IncomingCall händelser, vilket gör det viktigt att konfigurera din miljö för att ta emot dessa meddelanden för ditt program för att omdirigera eller besvara ett samtal effektivt. Därför är det viktigt att förstå grunderna i inkommande samtal för att utnyttja den fulla potentialen i Azure Communication Services Call Automation.

Samtalsscenarier

Innan du konfigurerar din miljö är det viktigt att förstå de scenarier som kan utlösa en IncomingCall händelse. För att utlösa en IncomingCall händelse måste ett anrop göras till antingen en Azure Communication Services-identitet eller ett PSTN-nummer (Public Switched Telephone Network) som är associerat med din Azure Communication Services-resurs. Följande är exempel på dessa resurser:

  1. En Azure Communication Services-identitet
  2. Ett PSTN-telefonnummer som ägs av din Azure Communication Services-resurs

I de här exemplen utlöser följande scenarier en IncomingCall händelse som skickas till Event Grid:

Källa Mål Scenarion
Identitet för Azure Communication Services Identitet för Azure Communication Services Samtal, omdirigering, Lägg till deltagare, Överföring
Identitet för Azure Communication Services PSTN-nummer som ägs av din Azure Communication Services-resurs Samtal, omdirigering, Lägg till deltagare, Överföring
Offentligt PSTN PSTN-nummer som ägs av din Azure Communication Services-resurs Samtal, omdirigering, Lägg till deltagare, Överföring

Kommentar

Det är viktigt att förstå att en Azure Communication Services-identitet kan representera antingen en användare eller ett program. Även om plattformen inte har någon inbyggd funktion för att uttryckligen tilldela en identitet till en användare eller ett program, kan ditt program eller den stödjande infrastrukturen åstadkomma detta. Mer information om det här avsnittet finns i guiden för identitetsbegrepp.

Registrera en Event Grid-resursprovider

Om du inte tidigare har använt Event Grid i din Azure-prenumeration kan du behöva registrera din Event Grid-resursprovider. Följ dessa steg för att registrera providern:

  1. Gå till Azure-portalen.
  2. Välj Prenumerationer på den vänstra menyn.
  3. Välj den prenumeration som du använder för Event Grid.
  4. På menyn till vänster går du till Inställningar och väljer Resursprovidrar.
  5. Hitta Microsoft.EventGrid.
  6. Om resursprovidern inte är registrerad väljer du Registrera.

Ta emot ett inkommande samtalsmeddelande från Event Grid

I Azure Communication Services är det möjligt att ta emot ett IncomingCall meddelande via en Event Grid-prenumeration. Som mottagare av meddelandet har du flexibiliteten att välja hur du ska hantera det. Eftersom Api:et för samtalsautomatisering utnyttjar Webhook-återanrop för händelser är det vanligt att använda en Event Grid-prenumeration för Webhook. Tjänsten erbjuder dock olika prenumerationstyper, och du har friheten att välja den lämpligaste för dina behov.

Den här arkitekturen har följande fördelar:

  • Med hjälp av Event Grid-prenumerationsfilter kan du dirigera meddelandet IncomingCall till specifika program.
  • PSTN-nummertilldelning och routningslogik kan finnas i ditt program jämfört med att statiskt konfigureras online.
  • Som du ser i avsnittet samtalsscenarier kan ditt program meddelas även när användare gör anrop mellan varandra. Du kan sedan kombinera det här scenariot tillsammans med API:erna för samtalsinspelning för att uppfylla efterlevnadsbehoven.

En exempelnyttolast för händelsen och mer information om andra samtalshändelser som publicerats till Event Grid finns i den här guiden.

Här är ett exempel på en Event Grid Webhook-prenumeration där händelsetypfiltret bara IncomingCall lyssnar på händelsen.

Image showing IncomingCall subscription.

Alternativ för samtalsroutning med Samtalsautomation och Event Grid

I Samtalsautomation och Event Grid kan samtalsroutning skräddarsys efter dina specifika behov. Genom att använda avancerade filter i din Event Grid-prenumeration kan du prenumerera på ett IncomingCall meddelande som gäller ett specifikt käll-/måltelefonnummer eller en Azure Communication Services-identitet. Det här meddelandet kan sedan dirigeras till en slutpunkt, till exempel en Webhook-prenumeration. Med hjälp av Call Automation SDK kan slutpunktsprogrammet sedan fatta ett beslut om att omdirigera anropet till en annan Azure Communication Services-identitet eller till PSTN.

Kommentar

För att säkerställa att ditt program endast tar emot de nödvändiga händelserna rekommenderar vi att du konfigurerar filtrering i Event Grid. Detta är särskilt viktigt i scenarier som genererar IncomingCall händelser, till exempel omdirigering av ett inkommande PSTN-anrop till en Azure Communication Services-slutpunkt. Om ett filter inte används tar Event Grid-prenumerationen emot två IncomingCall händelser – en för PSTN-anropet och en för Azure Communication Services-användaren – även om du endast avsåg att ta emot det första meddelandet. Om du inte hanterar sådana scenarier med hjälp av filter eller andra mekanismer i ditt program kan det leda till oändliga loopar och annat oönskat beteende.

Här är ett exempel på ett avancerat filter på en Event Grid-prenumeration som tittar på strängen data.to.PhoneNumber.Value som börjar med ett PSTN-telefonnummer på +18005551212.

Image showing Event Grid advanced filter.

Nummertilldelning

När du använder meddelandet IncomingCall i Azure Communication Services har du friheten att associera ett visst nummer med valfri slutpunkt. Om du till exempel har fått ett PSTN-telefonnummer och +14255551212 vill tilldela det till en användare med en identitet 375f0e2f-e8db-4449-9bf7-2054b02e42b4 i ditt program bör du underhålla en mappning av det numret till identiteten. När ett IncomingCall meddelande skickas som matchar telefonnumret i fältet till kan du anropa API:et Redirect och ange användarens identitet. Med andra ord kan du hantera nummertilldelningen i ditt program och dirigera eller besvara samtal vid körning.

Metodtips

  1. För att säkerställa att Event Grid levererar händelser till din Webhook-slutpunkt och förhindrar att skadliga användare översvämmar slutpunkten med händelser måste du bevisa ägarskapet för slutpunkten. Om du vill åtgärda eventuella problem med att ta emot händelser kontrollerar du att webhooken som du har konfigurerat har verifierats genom att hantera SubscriptionValidationEvent. Mer information finns i den här guiden.

  2. När en inkommande samtalshändelse tas emot, om programmet inte svarar med statuskoden 200Ok till Event Grid inom den tidsram som krävs, använder Event Grid exponentiell backoff-återförsök för att skicka händelsen igen. Ett inkommande samtal ringer dock bara i 30 sekunder och att svara på ett samtal efter den tiden kommer inte att vara effektivt. För att förhindra återförsök för utgångna eller inaktuella anrop rekommenderar vi att du ställer in återförsöksprincipen som Max Händelseleveransförsök till 2 och Händelsetid till Live till 1 minut. Du hittar de här inställningarna under fliken Ytterligare funktioner i händelseprenumerationen. Läs mer om återförsök här.

  3. Vi rekommenderar att du aktiverar loggning för din Event Grid-resurs för att övervaka händelser som inte kan levereras. Det gör du genom att gå till systemavsnittet under fliken Händelser i kommunikationsresursen och aktivera loggning från diagnostikinställningarna. Felloggar finns i tabellen "AegDeliveryFailureLogs".

    AegDeliveryFailureLogs
    | limit 10 
    | where Message has "incomingCall"
    

Nästa steg