Del via


Integrere opkaldsprogrammer fra tredjepart med Dynamics 365-samtaleintelligens (forhåndsversion)

[Denne artikel er til dokumentationen til den foreløbige udgivelse. Der kan forekomme ændringer.]

Med denne integration kan Dynamics 365-brugere bruge opkaldsprogrammer, der leveres af tredjepartstelefonifirmaer, f.eks. Twilio Flex, til at foretage og modtage telefonopkald i Dynamics 365 og få AI-genereret indsigt i realtid og omfattende analyse af opkald. Få mere at vide om Dynamics 365-samtaleintelligens

Vigtigt

  • Dette er en forhåndsversion af funktionen.
  • Forhåndsversionsfunktionerne er ikke beregnet til produktionsformål og kan have begrænset funktionalitet. Disse funktioner er underlagt supplerende vilkår for anvendelse, og er tilgængelige før en officiel udgivelse, så kunderne kan få tidlig adgang og give feedback.

Sådan fungerer integrationen

På et højt niveau består integrationen af tre dele:

  1. Registrer udbyderen: Registrer udbyderoplysningerne, og få listen over brugere registreret ved hjælp af API'en med samtaleintelligens.

  2. Forgren medierne: Forgren lydstrømmen til samtaleintelligensoptagerne ved hjælp af en SIPREC-protokol.

  3. Send hændelser i realtid: Du kan aktivere oplevelse af indsigt i realtid ved at sende hændelser i brugergrænsefladen fra udbyderens brugergrænseflade til Dynamics 365-samtaleintelligens.

Hvis du vil have et eksempel på integration mellem Dynamics 365-samtaleintelligens og en tredjepartstelefoniudbyder, Twilio Flex, skal du se Integrere Twilio Flex med Dynamics 365-samtaleintelligens.

I følgende diagram illustreres denne integration:

Diagram, der viser integrationsforløbet

Trin 1: Registrer udbyderen

  1. Opret et Microsoft Entra ID-program.

  2. Tilføj API-tilladelse til medieoptagelse:

    1. Gå til API-tilladelser i det Microsoft Entra ID-program, du har oprettet.

    2. Vælg Tilføj en tilladelse.

    3. Under API'er, som min organisation bruger skal du søge efter Medieoptagelse til Dynamics 365 Sales og vælge den: Skærmbillede af muligheden for medieoptagelse

    4. Tilføj Users.Read.All som tilladelse, og vælg Tilføj tilladelse

    Bemærk

    Sørg for at få administratorens samtykke til tilladelsen for at kunne kalde samtaleintelligens-API'en i appkonteksten. Få mere at vide om tilladelser og samtykke.

  3. Hent tokenet til at køre Samtaleintelligens-API'er ved hjælp af den app, der blev oprettet i forrige afsnit:

    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=00001111-aaaa-2222-bbbb-3333cccc4444/.default' -d 'client_secret=<your app secret>'

    Parameteren scope angiver program-id'et for appen Samtaleintelligens. Ret ikke denne værdi.

    Du kan finde flere oplysninger om kommandoen curl under Hent Microsoft Entra ID-tokens til tjenesteprincipaler.

  4. Kald følgende API til samtaleintelligens for at registrere tredjepartstjenesteudbyderen:
    POST /api/v1.0/providers/tenants

    Angiv følgende parametre i anmodningens brødtekst:

    • orgID: Angiv Dynamics 365-organisationens id.

    • Type: Angiv "custom" for tredjeparts opkaldsprogrammer.

    • hosting: Angiv værtstypen af telefoniudbyderen. F.eks. "cloud" eller "on-premises".

    • AccountId: Angiv konto-id'et for telefoniudbyderen.

    • CerfificateSubjectName og CertificateIssuer: Angiv certifikatoplysningerne for telefoniudbyderen.

    • SourceIPNetwork: Angiv IP-adressen til SIPREC-klienten. Angiv "0.0.0.0", hvis du ikke vil begrænse IP-adressen.
      Følgende kodestykke viser et eksempel på anmodningens brødtekst:

      
      {
         "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"
         }
      }
      

    Du kan finde flere oplysninger om API i Swagger-dokumentationen.

  5. Kald følgende API til samtaleintelligens for at hente listen over brugere, der skal registreres:
    GET /api/v1.0/providers/users

Når Dynamics 365 Sales-administratoren opretter en registreringspolitik, kan udbyderen bruge dette slutpunkt til at filtrere det medie, der skal forgrenes til samtaleintelligensens optagere.

Trin 2: Forgren mediet (SIPREC-integration)

Samtaleintelligensoptagere implementerer standardprotokollen SIPREC.

Kommunikationen sikres ved hjælp af SIPS- (port 5061) og SRTP-protokoller. Godkendelsen udføres ved hjælp af mTLS i forbindelse med SIPS-meddelelsesforbindelse, og den er baseret på det certifikat, der leveres til API'en – hvilket betyder, at udbyderen skal registreres for en lejer for at etablere SIPS-forbindelse.

I følgende skærmbillede illustreres kommunikationen mellem SIPREC-klienten og SIPREC-serveren:

Skærmbillede med eksempel på kommunikation mellem SIPREC-klienten og SIPREC-serveren.

Følgende metadata kræves for at kunne bruge samtaleintelligens:

Overskrifter:

Navn på overskrift Beskrivelse Eksempelværdi
Call-ID Entydigt id for opkaldet. Dette id bruges til at korrelere SIP-signaler og brugerhandlinger, f.eks. start/stop-optagelse. efxxxxxxxxxxxxx
X-AccountId Entydigt id for den konto, som opkaldet tilhører. Dette id bruges til godkendelse og autorisation. Det er det samme konto-id, der er registreret i API'en for lejeren. ACxxxxxxxxxxxxxxxxxxxxxxx

Metadata

Navn på metadatanøgle Beskrivelse Eksempelværdi
Rolle Angiver, om det er et indgående eller udgående opkald til sælgeren. ["inbound", "outbound"]
CallerDisplayName Opkalders viste navn. Hvis det ikke er tilgængeligt, vises telefonnummeret. Kenny Smith
CalleeDisplayName Vist navn på modtager. Hvis det ikke er tilgængeligt, vises telefonnummeret. Alex Baker

Her er eksempler på invitationer og afskedsmeddelelser med de påkrævede overskrifter og metadata:

INVITE-meddelelse:

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--

BYE-meddelelse:

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 

Optagerslutpunkter og områder understøttes

I følgende tabel vises de understøttede optagerslutpunkter og deres områder. Du kan konfigurere de optagere, du vil bruge, i indstillingerne for telefoniudbyderen. Du kan få mere at vide om, hvordan du gør det for Twilio Flex, i Trin 2: Installer SIPREC connector, og send opkaldene til Dynamics 365.

Slutpunkt Land/område
media.recording.dynamics.com Global (nærmeste område)
southeastasia.media.recording.dynamics.com Det sydøstlige Asien
australiaeast.media.recording.dynamics.com Australien
sam.media.recording.dynamics.com Sydamerika
canadacentral.media.recording.dynamics.com Canada
switzerlandnorth.media.recording.dynamics.com Schweiz
eastus.media.recording.dynamics.com US
francecentral.media.recording.dynamics.com Frankrig
centralindia.media.recording.dynamics.com Indien
japaneast.media.recording.dynamics.com Japan
uae.media.recording.dynamics.com Forenede Arabiske Emirater
uksouth.media.recording.dynamics.com Storbritannien
westeurope.media.recording.dynamics.com Det vestlige Europa
zaf.media.recording.dynamics.com Sydafrika

Trin 3: Send hændelser i realtid (opkaldsprogrammets klientintegration)

For at give samtaleintelligens mulighed for at levere transskription og indsigt i realtid kan tredjepartens opkaldsprogram bruge to hændelser til at give besked, når et opkald starter eller slutter.

  • Hændelse, der starter opkald: Når samtaleintelligens får hændelsen "opkald startet", vises optagelsesknappen og transskription og indsigt i realtid.

  • Hændelse, der afslutter opkald: Når samtaleintelligensen får hændelsen "opkald afsluttet", afsluttes opkaldet, og knappen Komplet oversigt vises for at få AI-genereret opkaldsoversigt og indsigt.

Hvis du vil sende hændelserne, skal du bruge raiseEvent API i Dynamics 365-kanalintegrationsstruktur (CIF).

Her er et eksempel på kodestykke til afsendelse af hændelserne:

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); 
});

Teste integrationen

Når du har registreret den nye udbyder hos lejeren og konfigureret SIPREC-forgrenings- og klientopkaldshændelser, kan du teste integrationen ved at oprette en ny optagelsespolitik med den nye udbyder.

  1. Log på som systemadministrator i appen Salgshub.

  2. Vælg Indstillinger for Sales Insights i ændringsområdet.

  3. Gå til Globale indstillinger>Samtaleintelligens. I sektionen Opkaldsudbydere kan du se den tredjepartsudbyder, du har registreret.

  4. Opret en optagelsespolitik for den nye udbyder. Der er flere oplysninger under Konfigurere Microsoft Teams til samtaleintelligens

Følgende skærmbillede er et eksempel på en optagelsespolitik for Twilio:

skærmbillede af en optagelsespolitik for Twilio

Kald nu en bruger, der er en del af den valgte sikkerhedsrolle (i eksemplet er politikken aktiveret for alle sikkerhedsroller).

Når Dynamics 365 modtager hændelsen callStarted fra opkaldsprogrammet, har du mulighed for at starte optagelsen:

Skærmbillede af meddelelsen om at optage opkald

Når du har valgt Optag, kan du se transskription i realtid under opkaldet samt en fuldstændig oversigt og opkaldsindsigt efter opkaldet.

Se og forstå siden med opkaldsoversigt