Dela via


Integrera uppringningsprogram från tredje part med Dynamics 365 konversationsintelligens (förhandsversion)

[Denna artikel är en förhandsversion av dokumentationen och kan komma att ändras.]

Med den här integreringen kan Dynamics 365-användare använda uppringningsprogram från tredje part, t.ex Twilio Flex, för att ringa och ta emot telefonsamtal i Dynamics 365 och få AI-genererad insikter och få detaljerade analyser efter samtal. Läs mer om konfiguration av Dynamics 365 konversationsintelligens

Viktigt!

  • Detta är en förhandsversion.
  • Förhandsversionsfunktioner ska inte användas i produktion och funktionerna kan vara begränsade. Funktionerna är föremål för kompletterande användningsvillkor så att kunder kan få tidig tillgång och ge feedback.

Så här fungerar integrationen

Integreringen på hög nivå består av tre delar:

  1. Registrera leverantören: Registrera information om leverantören och se till att användarlistan registreras med hjälp av API:et för konversationsintelligens.

  2. Förgrena media: Förgrena ljudströmmen till inspelare för konversationsintelligens med hjälp av SIPREC-protokollet.

  3. Skicka händelser i realtid: För att möjliggöra transkription i realtid och samtalsinsikter, skicka användargränssnittshändelser från leverantörens klientgränssnitt till Dynamics 365-konversationsintelligens.

Ett exempel på integrering mellan Dynamics 365 konversationsintelligens och en tredjepartsleverantör av telefoni, Twilio Flex, se Integrera Twilio Flex med Dynamics 365 konversationsintelligens.

I följande diagram illustreras hur integrationen fungerar:

Diagram som beskriver integrationsflödet

Steg 1: Registrera leverantören

  1. Skapa en Microsoft Entra ID-app.

  2. Lägg till API-behörighet för medieinspelning:

    1. I den Microsoft Entra ID-app du skapade, gå till API-behörigheter.

    2. Välj Lägg till behörighet.

    3. Under API:er som min organisation använder, sök efter Mediainspelning för Dynamics 365 Sales och välj den: Skärmbild på alternativet mediainspelning

    4. Lägg till behörigheter Users.Read.All och välj Lägg till behörighet

    Kommentar

    Se till att du får administratörsmedgivande för behörigheten för att kunna anropa konversationsintelligens-API:t i appkontext. Läs mer om behörigheter och samtycke.

  3. Hämta tokens för att köra API:er för konversationsintelligens med appen som skapades i föregående avsnitt:

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token -d 'client_id=<your app id>' -d 'grant_type=client_credentials' -d 'scope=f448d7e5-e313-4f90-a3eb-5dbb3277e4b3/.default' -d 'client_secret=<your app secret>'

    Parametern scope anger program-ID för appen Konversationsintelligens. Ändra inte detta värde.

    Mer information om curl-kommandot finns i Hämta Microsoft Entra ID-token för tjänsternas huvudnamn.

  4. Anropa följande API för konversationsintelligens om du vill registrera tredjepartsleverantören:
    POST /api/v1.0/providers/tenants

    Ange följande parametrar i begärandetext:

    • orgID: Ange organisations-ID för Dynamics 365.

    • Typ: Ange "anpassad" för uppringningsprogram från tredje part.

    • hosting: Ange värdtyp för telefoniprovidern. Till exempel "moln" eller "lokal".

    • AccountId: Ange konto-ID för telefoniprovidern.

    • CerfificateSubjectName och CertificateIssuer: Ange certifikatinformationen för telefoniprovidern.

    • SourceIPNetwork: Ange IP-adressen för SIPREC-klienten. Ange "0.0.0.0" om du inte vill begränsa IP-adressen.
      Följande kodavsnitt är ett exempel på begärandetexten.

      
      {
         "orgId": "ad3dca46-962a-4895-9f85-d25f3828781f",
         "Type": "custom",
         "hosting": "cloud",
         "displayName": "Test Custom Provider",
         "AuthenticationDetails": 
         {
             "AccountId":"adxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
             "CertificateSubjectName": "certSubject",
             "CertificateIssuer": "issuer",
             "SourceIPNetwork": "0.0.0.0"
         }
      }
      

    Mer information om API finns i Swagger-dokumentation.

  5. Anropa följande API för konversationsintelligens om du vill visa listan över användare att registrera:
    GET /api/v1.0/providers/users

När Dynamics 365 Sales-administratören skapar registreringspolicyn kan leverantören använda den slutpunkt för att filtrera media som ska förgrenas till konversationsintelligens.

Steg 2: Öka media (SIPREC-integrering)

Konversationsintelligens inspelare implementerar standard SIPREC-protokoll.

Kommunikationen säkras med SIPS (port 5061) och SRTP-protokoll. Autentiseringen sker med mTLS i SIPS-meddelandeanslutningen och baseras på det certifikat som tillhandahålls till API:t – vilket innebär att leverantören måste vara registrerad för att en hyresgäst ska kunna upprätta SIPS-anslutning.

I följande skärmbild illustreras kommunikationen mellan SIPREC-klienten och SIPREC-servern:

Skärmbild på exempel illustrerar kommunikationen mellan SIPREC-klienten och SIPREC-servern.

Följande metadata krävs för konversationsintelligens:

Rubriker:

Rubriknamn Description Värdeexempel
Samtals-ID Unik identifierare för samtalet. Detta ID används för att korrelera SIP-signaler och användaråtgärder som att starta/stoppa inspelning. efxxxxxxxxxxxxx
X-AccountId Unik identifierare för kontot som samtalet tillhör. Detta ID används för autentisering och auktorisering. Detta är samma konto-ID som är registrerat i API för klientorganisationen. ACxxxxxxxxxxxxxxxxxxxxxxx

Metadata

Namn på metadatanyckel Description Värdeexempel
Roll Anger om det är ett inkommande eller utgående samtal för säljaren. ["inkommande", "utgående"]
CallerDisplayName Uppringarens visningsnamn Om det inte finns tillgängligt visas telefonnummer. Kenny Smith
CalleeDisplayName Mottagarens visningsnamn. Om det inte finns tillgängligt visas telefonnummer. Alex Baker

Här är exempel på inbjudan- och hej då-meddelanden med de obligatoriska rubrikerna och metadata:

INBJUDAN-meddelande:

INVITE sip:SRS@media.recording.dynamics.com:5061;transport=tls SIP/2.0 
Via: SIP/2.0/TLS 84.172.x.x:5061;branch=z9hG4bK4fa2.cdabfe83d76d3c41987802096d3b342a.0;received=172.16.x.x;rport=40334 
Via: SIP/2.0/UDP 172.25.x.x:5060;rport=5060;branch=z9hG4bK917ce574-0345-4c3d-9b63-d98c2c57dbe6_c3356d0b_599-10236398515455707148 
To: <sip:SRS@media.recording.dynamics.com:5061;transport=tls> 
From: <sip:SRC@sip.provider.com>;tag=66790678_c3356d0b_917ce574-0345-4c3d-9b63-d98c2c57dbe6 
Call-ID: efab0870bc597cb3fb56010921e2f57f 
CSeq: 1 INVITE 
Contact: <sip:SRC@172.25.x.x:5060;transport=udp>;+sip.src 
Max-Forwards: 67 
Record-Route: <sip:84.172.x.x:5061;transport=tls;r2=on;lr>,<sip:84.172.x.x;r2=on;lr> 
User-Agent: provider Gateway 
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,NOTIFY 
Require: siprec 
Content-Length: 3194 
Content-Type: multipart/mixed;boundary=\"----=_Part_1253_283419664.1674116473425\" 
Min-SE: 35 
X-AccountId: ACxxxxxxxxxxxxxxxxxxxx 
------=_Part_1253_283419664.1674116473425 

Content-Type: application/sdp 
v=0 
o=root 1176539620 1176539620 IN IP4 172.18.x.x 
s=provider Media Gateway 
c=IN IP4 84.172.x.x 
t=0 0 
m=audio 15352 RTP/SAVP 0 8 101 
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:<Encryption_key>
a=rtpmap:0 PCMU/8000 
a=rtpmap:8 PCMA/8000 
a=rtpmap:101 telephone-event/8000 
a=fmtp:101 0-16 
a=ptime:20 
a=maxptime:20 
a=sendonly 
a=label:inbound 
m=audio 16022 RTP/SAVP 0 8 101 
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:<Encryption_key> 
a=rtpmap:0 PCMU/8000 
a=rtpmap:8 PCMA/8000 
a=rtpmap:101 telephone-event/8000 
a=fmtp:101 0-16 
a=ptime:20 
a=maxptime:20 
a=sendonly 
a=label:outbound 
------=_Part_1253_283419664.1674116473425 

Content-Type: application/rs-metadata+xml 
Content-Disposition: recording-session 
<?xml version=\"1.0\" encoding=\"UTF-8\"?> 
<recording xmlns='urn:ietf:params:xml:ns:recording:1'> 
    <datamode>complete</datamode> 
    <session session_id=\"Wd/putWgTWCW2z1lI5Db9w==\"> 
            <ExtensionParameters  xmlns=\"http://provider.com/siprec\"> 
                    <Parameter name=\"Role\" value=\"inbound\"/> 
                    <Parameter name=\"CallerDisplayName\" value=\"Kiana Anderson\"/> 
                    <Parameter name=\"CalleeDisplayName\" value=\"Tomas Richardson\"/> 
            </ExtensionParameters> 
    </session> 
        <participant participant_id=\"bXCloPcETS6P/kfeeJtiow==\"> 
            <nameID aor=\"EE5C7EF0\"/> 
        </participant> 
        <participant participant_id=\"3nPi8XzBSzWrtSLlkU8Gjw==\"> 
            <nameID aor=\"230908\"/> 
        </participant> 
        <stream stream_id=\"9xff8FcdRUaJCSTxWFbV9g==\" session_id=\"Wd/putWgTWCW2z1lI5Db9w==\"><label>inbound</label></stream> 
        <stream stream_id=\"f/Qezx4jTMqiWSB1vW7oJA==\" session_id=\"Wd/putWgTWCW2z1lI5Db9w==\"><label>outbound</label></stream> 
    <sessionrecordingassoc session_id=\"Wd/putWgTWCW2z1lI5Db9w==\"> 
        <associate-time>2023-01-19T08:21:13.382512Z</associate-time> 
    </sessionrecordingassoc> 
        <participantsessionassoc participant_id=\"bXCloPcETS6P/kfeeJtiow==\" session_id=\"Wd/putWgTWCW2z1lI5Db9w==\"> 
            <associate-time>2023-01-19T08:21:13.382512Z</associate-time> 
        </participantsessionassoc> 
        <participantsessionassoc participant_id=\"3nPi8XzBSzWrtSLlkU8Gjw==\" session_id=\"Wd/putWgTWCW2z1lI5Db9w==\"> 
            <associate-time>2023-01-19T08:21:13.382512Z</associate-time> 
        </participantsessionassoc> 
        <participantstreamassoc participant_id=\"bXCloPcETS6P/kfeeJtiow==\"> 
                <send>9xff8FcdRUaJCSTxWFbV9g==</send> 
                <recv>f/Qezx4jTMqiWSB1vW7oJA==</recv> 
        </participantstreamassoc> 
        <participantstreamassoc participant_id=\"3nPi8XzBSzWrtSLlkU8Gjw==\"> 
                <send>f/Qezx4jTMqiWSB1vW7oJA==</send> 
                <recv>9xff8FcdRUaJCSTxWFbV9g==</recv> 
        </participantstreamassoc> 
</recording> 
------=_Part_1253_283419664.1674116473425--

HEJ DÅ-meddelande:

BYE sip:SRS@media.recording.dynamics.com:5061;transport=tls SIP/2.0 
Via: SIP/2.0/TLS 84.172.x.x:5061;branch=z9hG4bK1fa2.d03c36b567136fcfae84281e926cda62.0;received=172.16.x.x;rport=40334 
Via: SIP/2.0/UDP 172.25.x.x:5060;rport=5060;received=84.144.x.x;branch=z9hG4bK917ce574-0345-4c3d-9b63-d98c2c57dbe6_c3356d0b_600-2513288074170844985 
To: <sip:SRS@media.recording.dynamics.com:5061;transport=tls>;tag=OXFWHPJQTL 
From: <sip:SRC@sip.provider.com>;tag=66790678_c3356d0b_917ce574-0345-4c3d-9b63-d98c2c57dbe6 
Call-ID: efab0870bc597cb3fb56010921e2f57f 
CSeq: 2 BYE 
Max-Forwards: 68 
User-Agent: provider Gateway 
Require: siprec 
Content-Length: 901 
Content-Type: multipart/mixed;boundary=\"----=_Part_29418_1017575873.1674116842924\" 
X-AccountId: ACxxxxxxxxxxxxx 

Slutpunkter och regioner som stöds

I följande tabell visas de slutpunkter som stöds och deras regioner. Du kan konfigurera de inspelare som ska användas i telefonileverantörens inställningar. Mer information om hur du gör detta för Twilio Flex finns i Steg 2: Installera SIPREC-anslutningsprogrammet och dirigera samtalen till Dynamics 365.

Slutpunkt Region
media.recording.dynamics.com Global (närmaste region)
southeastasia.media.recording.dynamics.com Sydostasien
australiaeast.media.recording.dynamics.com Australien
sam.media.recording.dynamics.com Sydamerika
canadacentral.media.recording.dynamics.com Kanada
switzerlandnorth.media.recording.dynamics.com Schweiz
eastus.media.recording.dynamics.com US
francecentral.media.recording.dynamics.com Frankrike
centralindia.media.recording.dynamics.com Indien
japaneast.media.recording.dynamics.com Japan
uae.media.recording.dynamics.com UAE
uksouth.media.recording.dynamics.com Storbritannien
westeurope.media.recording.dynamics.com Västeuropa
zaf.media.recording.dynamics.com Sydafrika

Steg 3: Skicka händelser i realtid (klientintegrering för uppringningsprogram)

Om du vill tillåta konversationsintelligens som ger inspelning med realtidstranskription och insikter kan uppringningsprogram från tredje part använda två händelser för att meddela när ett samtal startar eller slutar.

  • Samtal startade händelse: När konversationsintelligens får händelsen "samtal startat" visas knappen för inspelning med transkription och insikter i realtid.

  • Samtal avslutade händelse: När konversationsintelligens får händelsen samtal avslutat kommer det att avsluta samtalet och visa knappen fullständig sammanfattning för att få den AI-generade samtalssammanfattningen och insikter.

Om du vill skicka händelser använder du API:n raiseEvent i Dynamics 365 ramverk för kanalintegration (CIF).

Här är ett exempelkodavsnitt som kan skickas till händelserna:

export interface CallStartedEvent { 
  callId: string; 
  startTime: Date; 
  isIncomingCall: boolean; 
  contactNumber: string; 
  contactName: string; 
} 

export interface CallEndedEvent { 
  callId: string; 
  callDurationInSeconds: number; 
  callTerminationReason: string; // ['success', 'error'] 
  callEndTime: Date; 
  isCallStarted: boolean; 
} 

dialer.Actions.addListener('onCallStarted', (payload: any) => { 
  const callStartedEvent : CallStartedEvent = { 
    callId: payload.call_sid, 
    startTime: new Date(), 
    isIncomingCall: payload.attributes.is_incoming_call, 
    contactName: payload.attributes.caller_name, 
    contactNumber: payload.attributes.caller_phone_number 
  }; 

  // @ts-ignore 
  Microsoft.CIFramework.raiseEvent('WIDGET_CALL_STARTED', callStartedEvent); 
}); 

dialer.Actions.addListener('onCallEnded', (payload: any) => { 
  const callEndedEvent : CallEndedEvent = { 
    callId: payload.call_sid, 
    callEndTime: new Date(), 
    callTerminationReason: 'success', 
    isCallStarted: true, 
    callDurationInSeconds: payload.attributes.call_length 
  }; 

  // @ts-ignore 
  Microsoft.CIFramework.raiseEvent('WIDGET_CALL_ENDED', callEndedEvent); 
});

Testa integreringen

När du har registrerat den nya leverantören hos klientorganisationen och ställt in SIPREC-förgrening och händelserna för klientuppringning, kan du testa integrationen genom att skapa en ny registreringspolicy med den nya leverantören.

  1. Logga in som systemadministratör i appen Försäljningsnav.

  2. Från ändringsområdet väljer du Inställningar för Sales Insights.

  3. Gå till Globala inställningar>Konversationsintelligens. I avsnittet Samtalsleverantörer visas den tredjepartsleverantör som du har registrerat.

  4. Skapa en registreringspolicy för den nya leverantören. Mer information finns i Konfigurera Microsoft Teams för konversationsintelligens

Följande skärmbild är ett exempel på en inspelningspolicy för Twilio:

skärmbild av en inspelningspolicy för Twilio

Ring nu en användare som är en del av säkerhetsroll (i vårt exempel är principen aktiverad för alla säkerhetsroller).

När Dynamics 365 tar emot callStarted-händelsen från uppringaren har du möjlighet att starta registreringen:

Skärmbild av meddelandet om att registrera samtal

När du har valt spela in, kan du se transkriptionen i realtid under samtalet och en fullständig sammanfattning och samtalsinsikter i slutet av samtalet.

Visa och förstå sidan samtalssammanfattning