Dijeli putem


Integrirajte birače drugih proizvođača s Dynamics 365 Obavještavanje o razgovorima (pretpregled)

[Ovaj je članak iz dokumentacije predizdanja i podložan je promjenama.]

Uz ovu integraciju korisnici sustava Dynamics 365 mogu koristiti birače koje pružaju telefonske tvrtke trećih strana, kao što je Twilio Flex, za upućivanje i primanje telefonskih poziva u sustavu Dynamics 365 te dobivanje uvida generiranih umjetnom inteligencijom u stvarnom vremenu i bogate analize njihovih poziva nakon poziva. Saznajte više o Dynamics 365 Obavještavanje o razgovorima

Važno

  • To je značajka pretpregleda.
  • Značajke pretpregleda nisu namijenjene u proizvodne svrhe i mogu imati ograničene funkcije. Te značajke podliježu dodatnim uvjetima korištenja i dostupne su prije službenog izdanja kako bi korisnici mogli dobiti rani pristup i dati povratne informacije.

Kako funkcionira integracija

Na visokoj razini, integracija se sastoji od tri dijela:

  1. Registrirajte davatelja usluga: Registrirajte pojedinosti o davatelju usluga i zabilježite popis korisnika pomoću API-ja za Obavještavanje o razgovorima.

  2. Račvanje medija: Račvanje audio toka na snimčače Obavještavanje o razgovorima pomoću SIPREC protokola.

  3. Slanje događaja u stvarnom vremenu: Da biste omogućili transkripciju u stvarnom vremenu i Uvidi u pozive iskustvo, pošaljite događaje korisničkog sučelja iz korisničkog sučelja klijenta davatelja usluga na Dynamics 365 Obavještavanje o razgovorima.

Za primjer integracije između Dynamics 365 Obavještavanje o razgovorima i davatelja telefonije treće strane, Twilio Flex, pogledajte Integracija Twilio Flex s Dynamics 365 Obavještavanje o razgovorima.

Sljedeći dijagram ilustrira kako funkcionira integracija:

Dijagram koji prikazuje tijek integracije

1. korak: Registrirajte pružatelja usluga

  1. Napravite aplikaciju Microsoft Entra zaidentifikaciju.

  2. Dodajte API dopuštenje za snimanje medija:

    1. U aplikaciji ID-a Microsoft Entra koju ste stvorili idite na API dozvole.

    2. Odaberite Dodaj dopuštenje.

    3. U odjeljku API-ji moja tvrtka ili ustanova koristi potražite Medijsko snimanje za Dynamics 365 Sales i odaberite ga: Snimka zaslona opcije snimanja medija

    4. Dodajte dozvolu Users.Read.All i odaberite Dodaj dozvolu

    Napomena

    Obavezno zatražite pristanak administratora za dozvolu da biste mogli pozvati API za Obavještavanje o razgovorima u kontekstu aplikacije. Saznajte više o dopuštenjima i pristanku.

  3. Nabavite token za pokretanje API-ja za Obavještavanje o razgovorima pomoću aplikacije stvorene u prethodnom odjeljku:

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

    Parametar scope određuje ID aplikacije za Obavještavanje o razgovorima. Nemojte mijenjati ovu vrijednost.

    Dodatne informacije o naredbi curl potražite u članku Dohvaćanje Microsoft Entra tokena ID-a za upravitelje usluge.

  4. Nazovite sljedeći API za Obavještavanje o razgovorima da biste registrirali davatelja usluga treće strane:
    POST /api/v1.0/providers/tenants

    Navedite sljedeće parametre u tijelu zahtjeva:

    • orgID: Navedite ID tvrtke ili ustanove sustava Dynamics 365.

    • Vrsta: Navedite "prilagođeno" za birače drugih proizvođača.

    • hosting: Navedite vrstu hostinga davatelja telefonskih usluga. Na primjer, "oblak" ili "lokalno".

    • AccountId: Navedite ID računa davatelja telefonskih usluga.

    • CerfificateSubjectName i CertificateIssuer: Navedite pojedinosti o certifikatu davatelja telefonskih usluga.

    • SourceIPNetwork: Navedite IP adresu SIPREC klijenta. Navedite "0.0.0.0" ako ne želite ograničiti IP adresu.
      Sljedeći isječak primjer je tijela zahtjeva:

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

    Dodatne informacije o API-ju potražite u dokumentaciji za Swagger.

  5. Nazovite sljedeći API za Obavještavanje o razgovorima da biste dobili popis korisnika za snimanje:
    GET /api/v1.0/providers/users

Nakon što administrator sustava Dynamics 365 Sales stvori pravilnik o snimanju, davatelj usluga može koristiti ovu krajnja točka za filtriranje medija koji će se račvati na snimčače Obavještavanje o razgovorima.

Korak 2: Fork medija (SIPREC integracija)

Obavještavanje o razgovorima snimači implementiraju standard SIPREC protokol.

Komunikacija je osigurana pomoću SIPS (port 5061) i SRTP protokola. Autentifikacija se vrši pomoću mTLS-a u vezi sa SIPS porukom, a temelji se na certifikatu koji je dostavljen API-ju – što znači da davatelj usluga mora biti registriran za klijenta da bi uspostavio SIPS vezu.

Sljedeća snimka zaslona ilustrira komunikaciju između SIPREC klijenta i SIPREC poslužitelja:

Snimka zaslona uzorka komunikacije između SIPREC klijenta i SIPREC poslužitelja.

Sljedeći metapodaci potrebni su za Obavještavanje o razgovorima:

Zaglavlja:

Naziv zaglavlja Opis Primjer vrijednosti
ID poziva Jedinstveni identifikator poziva. Ovaj ID se koristi za korelaciju SIP signala i korisničkih radnji kao što je pokretanje/zaustavljanje snimanja. EFXXXXXXXXXXXXX
X-AccountId Jedinstveni identifikator računa kojem poziv pripada. Ovaj ID se koristi za provjeru autentičnosti i autorizaciju. To je isti ID računa registriran u API-ju za klijenta. ACxxxxxxxxxxx

Metapodaci

Naziv ključa metapodataka Opis Primjer vrijednosti
Uloga Označava radi li se o dolaznom ili odlaznom pozivu prodavatelja. ["dolazni", "odlazni"]
CallerDisplayName Tzaslonsko ime pozivatelja. Ako nije dostupan, prikazuje se telefonski broj. Kenny Smith
CalleeDisplayName Zaslonsko ime primatelja. Ako nije dostupan, prikazuje se telefonski broj. Alex Baker

Evo primjera poruka s pozivnicom i oprošćivanjem s potrebnim zaglavljima i metapodacima:

Poruka POZIVNICE:

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

DOVIĐENJA poruka:

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 

Podržane krajnje točke i regije snimača

U sljedećoj su tablici navedene podržane krajnje točke snimača i njihove regije. Snimke koje želite koristiti možete konfigurirati u postavkama davatelja usluga telefonije. Da biste saznali više o tome kako se to radi za Twilio Flex, pogledajte Korak 2: Instalacija SIPREC poveznika i usmjeravanje poziva u Dynamics 365.

Krajnja točka Regija
media.recording.dynamics.com Globalno (najbliža regija)
southeastasia.media.recording.dynamics.com Jugoistočna Azija
australiaeast.media.recording.dynamics.com Australija
sam.media.recording.dynamics.com Južna Amerika
canadacentral.media.recording.dynamics.com Kanada
switzerlandnorth.media.recording.dynamics.com Švicarska
eastus.media.recording.dynamics.com SAD
francecentral.media.recording.dynamics.com Francuska
centralindia.media.recording.dynamics.com Indija
japaneast.media.recording.dynamics.com Japan
uae.media.recording.dynamics.com UAE
uksouth.media.recording.dynamics.com Ujedinjeno Kraljevstvo
westeurope.media.recording.dynamics.com Zapadna Europa
zaf.media.recording.dynamics.com Južnoafrička Republika

Korak 3: Slanje događaja u stvarnom vremenu (integracija klijenta Dialera)

Da bi Obavještavanje o razgovorima omogućilo transkripcija i uvidi u stvarnom vremenu, birač treće strane može koristiti dva događaja za obavještavanje o početku ili završetku poziva.

  • Događaj započetog poziva: Kada Obavještavanje o razgovorima dobije događaj "poziv je započeo", prikazat će gumb za snimanje i transkripcija i uvidi u stvarnom vremenu.

  • Događaj završetka poziva: Kada Obavještavanje o razgovorima dobije događaj "poziv je završen", Zamatanje će poziv i prikazati gumb Potpuni sažetak da biste dobili sažetak poziva i uvide generirani umjetnom inteligencijom.

Da biste poslali događaje, upotrijebite raiseEvent API u Okvir za integraciju kanala za Dynamics 365 (CIF).

Evo primjera isječaka koda za slanje događaja:

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

Testirajte integraciju

Nakon registracije novog davatelja usluga kod klijenta i postavljanja događaja račvanja SIPREC i birača klijenta, možete testirati integraciju stvaranjem novog pravilnika o snimanju s novim davateljem usluga.

  1. Prijavite se kao administrator sustava u aplikaciji Središte za prodaju.

  2. U području Promjena odaberite Postavke uvida u prodaju.

  3. Idite naGlobalne postavkeObavještavanje> o razgovorima. U odjeljku Davatelji usluga poziva vidjet ćete davatelja usluga treće strane kojeg ste registrirali.

  4. Stvorite pravila snimanja za novog davatelja usluga. Dodatne informacije potražite u članku Postavljanje Microsoft Teams Obavještavanje o razgovorima

Sljedeća snimka zaslona primjer je pravila snimanja za Twilio.

Snimka zaslona pravila snimanja za Twilio

Sada nazovite korisnika koji je dio odabrane sigurnosna uloga (u našem primjeru pravilo je omogućeno za sve sigurnosne uloge).

Kada Dynamics 365 primi događaj callStarted iz birača, imat ćete mogućnost započeti snimanje:

Snimka zaslona obavijesti za snimanje poziva

Nakon što odaberete Snimi, moći ćete vidjeti transkripciju u stvarnom vremenu tijekom poziva te potpuni sažetak i Uvidi u pozive na kraju poziva.

Prikaz i razumijevanje stranice sažetak poziva