Del via


Integrer tredjepartsoppringinger med samtaleintelligens i Dynamics 365 (forhåndsversjon)

[Denne artikkelen inneholder dokumentasjon for forhåndsversjonen og kan bli endret.]

Med denne integrasjonen kan Dynamics 365-brukere bruke oppringinger fra tredjeparts telefonselskaper, for eksempel Twilio Flex, til å foreta og motta telefonanrop i Dynamics 365, og få KI-generert innsikt i sanntid og omfattende analyse av telefonsamtalene. Finn ut mer om samtaleintelligens i Dynamics 365

Viktig

  • Dette er forhåndsversjonsfunksjon.
  • Forhåndsversjonsfunksjonene er ikke ment for produksjonsbruk og kan ha begrenset funksjonalitet. Disse funksjonene er underlagt tilleggsvilkår for bruk og er tilgjengelige før en offisielle utgivelse, slik at kunder kan få tidlig tilgang og gi tilbakemeldinger.

Slik fungerer integreringen

Integreringen på et høyere nivå består av tre deler:

  1. Registrer leverandøren: Registrer leverandørdetaljene, og hent listen over brukere som skal registreres, ved å bruke for API-en for samtaleintelligens.

  2. Forgren mediene: Forgren lydstrømmen til samtaleintelligensopptakerne ved å bruke en SIPREC-protokoll.

  3. Sende hendelser i sanntid: Hvis du vil aktivere sanntidsavskrift og opplevelse av anropsinnsikt, sender du grensesnitthendelser fra leverandørens klientgrensesnitt til Dynamics 365-samtaleintelligens.

Hvis du vil ha et eksempel på integrering mellom samtaleintelligens i Dynamics 365 og en tredjeparts telefonileverandør, Twilio Flex, kan du se Integrer Twilio Flex med samtaleintelligens i Dynamics 365.

Diagrammet nedenfor viser hvordan integreringen fungerer:

Diagram som viser integreringsflyten

Trinn 1: Registrer leverandøren

  1. Opprett et Microsoft Entra-ID-program.

  2. Legg til API-tillatelse for medieopptak:

    1. I Microsoft Entra ID-programmet du opprettet, går du til API-tillatelser.

    2. Velg Legg til en tillatelse.

    3. Under API-er organisasjonen min bruker søker du etter Medieopptak for Dynamics 365 Sales og velger det: Skjermbilde av alternativet for medieopptak

    4. Legg til tillatelsen Users.Read.All, og velg Legg til tillatelse

    Merk

    Sørg for å få administratorsamtykke for tillatelsen, slik at det går an å kalle opp API-en for samtaleintelligens i appkontekst. Finn ut mer om tillatelser og samtykke.

  3. Hent tokenet for å kjøre API-ene for samtaleintelligens ved hjelp av appen du opprettet i forrige del:

    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 angir program-ID-en for appen Samtaleintelligens. Ikke endre denne verdien.

    Hvis du vil ha mer informasjon om kommandoen curl, kan du se Hent Microsoft Entra-ID-tokener for tjenestekontohavere.

  4. Kall opp følgende API for samtaleintelligens for å registrere tredjeparts tjenesteleverandør:
    POST /api/v1.0/providers/tenants

    Angi følgende parametere i forespørselsteksten:

    • orgID: Angi organisasjons-ID-en for Dynamics 365.

    • Type: Angi «egendefinert» for tredjepartsoppringinger.

    • hosting: Angi vertstypen for telefonileverandøren. Eksempel: «sky» eller «lokalt».

    • AccountId: Angi konto-ID-en for telefonileverandøren.

    • CerfificateSubjectName og CertificateIssuer: Angi sertifikatdetaljene for telefonileverandøren.

    • SourceIPNetwork: Angi IP-adressen til SIPREC-klienten. Angi «0.0.0.0» hvis du ikke vil begrense IP-adressen.
      Snutten nedenfor er et eksempel på forespørselsteksten:

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

    Hvis du vil ha mer informasjon om API-en, kan du se dokumentasjonen for Swagger.

  5. Kall opp følgende API for samtaleintelligens for å hente listen over brukere som skal tas opp:
    GET /api/v1.0/providers/users

Etter at administratoren for Dynamics 365 Sales har opprettet opptakspolicyen, kan leverandøren bruke dette endepunktet til å filtrere mediene som blir forgrenet til samtaleintelligensopptakere.

Trinn 2: Forgren mediene (SIPREC-integrering)

Samtaleintelligensopptakere implementerer standard SIPREC-protokoll.

Kommunikasjonen sikres ved hjelp av protokollene SIPS (port 5061) og SRTP. Godkjenningen utføres ved hjelp av mTLS i SIPS-meldingstilkoblingen og er basert på sertifikatet som gis til API-et. Dette betyr at leverandøren må være registrert for en leier for å opprette SIPS-tilkobling.

Følgende skjermbilde illustrerer kommunikasjonen mellom SIPREC-klienten og SIPREC-serveren:

Skjermbilde av et eksempel på kommunikasjonen mellom SIPREC-klienten og SIPREC-serveren.

Følgende metadata kreves for samtaleintelligens:

Hoder:

Hodenavn Beskrivelse Verdieksempel
Samtale-ID Unik identifikator for samtalen. Denne IDen brukes til å relatere SIP-signaler og brukerhandlinger, for eksempel start/stopp innspilling. efxxxxxxxxxxxxx
X-AccountId Unik identifikator for kontoen som samtalen tilhører. Denne IDen brukes til godkjenning og autorisasjon. Dette er den samme konto-ID-en som er registrert i API-en for leieren. ACxxxxxxxxxxxxxxxxxxxxxxx

Metadata

Nøkkelnavn for metadata Beskrivelse Verdieksempel
Rolle Angir om det er en inngående eller utgående samtale for selgeren. ["inbound", "outbound"]
CallerDisplayName Visningsnavn for anroper. Telefonnummeret vises hvis navnet ikke er tilgjengelig. Kenny Smith
CalleeDisplayName Mottakerens visningsnavn. Telefonnummeret vises hvis navnet ikke er tilgjengelig. Alex Baker

Her er eksempler på invitasjons- og avskjedsmeldinger med de nødvendige hodene og metadataene:

INVITE-melding:

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

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 

Endepunkter og områder støttes for opptaker

Tabellen nedenfor viser støttede endepunkter for opptaker og områdene deres. Du kan konfigurere opptakerne du vil bruke, i innstillingene for telefonileverandør. Hvis du vil vite mer om hvordan dette gjøres for Twilio Flex, kan du se Trinn 2: Installer SIPREC-koblingen og rut samtalene til Dynamics 365.

Endepunkt Område
media.recording.dynamics.com Globalt (nærmeste område)
southeastasia.media.recording.dynamics.com Asia, sørøst
australiaeast.media.recording.dynamics.com Australia
sam.media.recording.dynamics.com Sør-Amerika
canadacentral.media.recording.dynamics.com Canada
switzerlandnorth.media.recording.dynamics.com Sveits
eastus.media.recording.dynamics.com – USA
francecentral.media.recording.dynamics.com Frankrike
centralindia.media.recording.dynamics.com India
japaneast.media.recording.dynamics.com Japan
uae.media.recording.dynamics.com UAE
uksouth.media.recording.dynamics.com Storbritannia
westeurope.media.recording.dynamics.com Europa, vest
zaf.media.recording.dynamics.com Sør-Afrika

Trinn 3: Send hendelser i sanntid (oppringingens klientintegrering)

For å tillate at samtaleintelligens kan gi sanntidstranskripsjon og -innsikt, kan tredjepartsoppringingen bruke to hendelser til å varsle når en samtale starter eller slutter.

  • Samtale startet-hendelse: Når samtaleintelligens får hendelsen «samtale startet», vises opptaksknappen og sanntidstranskripsjonen og -innsikten.

  • Samtale avsluttet-hendelse: Når samtaleintelligens får hendelsen «samtale avsluttet», avsluttes samtalen og knappen Fullstendig sammendrag vises for å hente KI-generert samtalesammendrag og -innsikt.

Du kan sende hendelsen ved å bruke API-en raiseEvent i Dynamics 365 Channel Integration Framework (CIF).

Her er et eksempel på kodesnutt for sending av hendelsene:

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

Test integreringen

Etter at du har registrert den nye leverandøren med leieren og konfigurert hendelsene for SIPREC-forgrening og klientoppringing, kan du teste integreringen ved å opprette en ny opptakspolicy med den nye leverandøren.

  1. Logg deg på som en systemansvarlig i Salgssenter-appen.

  2. I Endre område velger du Sales Insights-innstillinger.

  3. Gå til Globale innstillinger>Samtaleintelligens. I delen Samtaleleverandører vises tredjepartsleverandøren du har registrert.

  4. Opprett en opptakspolicy for den nye leverandøren. Hvis du vil ha mer informasjon, kan du se Konfigurer Microsoft Teams for samtaleintelligens

Følgende skjermbilde er et eksempel på en opptakspolicy for Twilio.

skjermbilde av en opptakspolicy for Twilio

Ring nå en bruker som er en del av den valgte sikkerhetsrollen (i vårt eksempel er policyen aktivert for alle sikkerhetsroller).

Når Dynamics 365 mottar callStarted-hendelsen fra oppringingen, kan du starte opptaket:

Skjermbilde av varslingen om å ta opp samtaler

Etter at du har valgt Ta opp, kan du se sanntidstranskripsjon under samtalen, og et fullstendig sammendrag og anropsinnsikt på slutten av samtalen.

Vis og forstå siden for samtalesammendrag