Deli z drugimi prek


Integrirajte klicnike drugih proizvajalcev z Dynamics 365 obveščanje o pogovorih (predogledna različica)

[Ta članek je del predizdajne dokumentacije in se lahko spremeni.]

S to integracijo lahko uporabniki Dynamics 365 uporabljajo klicalnike, ki jih zagotavljajo druga telefonska podjetja, kot je Twilio Flex, za klicanje in sprejemanje telefonskih klicev v Dynamics 365 ter pridobijo vpoglede, ki jih ustvari umetna inteligenca v realnem času, in bogato analizo svojih klicev po klicu. . Izvedite več o pogovorni inteligenci Dynamics 365

Pomembno

  • To je funkcija predogleda.
  • Predogledne različice funkcij niso za komercialno uporabo in njihovo delovanje je lahko omejeno. Za te funkcije veljajo dodatni pogoji uporabe in so na voljo pred uradno izdajo, tako da lahko stranke dobijo zgodnji dostop in pošljejo povratne informacije.

Kako integracija deluje

Na visoki ravni je integracija sestavljena iz treh delov:

  1. Registrirajte ponudnika: Registrirajte podrobnosti ponudnika in pridobite seznam uporabnikov, ki ga želite zabeležiti, z uporabo API-ja obveščanje o pogovorih.

  2. Razcepi medije: Razcepi zvočni tok na snemalnike obveščanje o pogovorih s protokolom SIPREC.

  3. Pošiljanje dogodkov v realnem času: Če želite omogočiti prepis v realnem času in izkušnjo vpogledi v klice, pošljite dogodke uporabniškega vmesnika iz uporabniškega vmesnika odjemalca ponudnika v Dynamics 365 obveščanje o pogovorih.

Za primer integracije med Dynamics 365 obveščanje o pogovorih in zunanjim ponudnikom telefonije, Twilio Flex, glejte Integrirajte Twilio Flex z Dynamics 365 obveščanje o pogovorih.

Naslednji diagram prikazuje, kako deluje integracija:

Diagram, ki prikazuje tok integracije

Korak 1: Registrirajte ponudnika

  1. Ustvari Microsoft Entra ID aplikacijo.

  2. Dodajte dovoljenje API za snemanje medijev:

    1. V aplikaciji Microsoft Entra ID, ki ste jo ustvarili, pojdite na Dovoljenja API-ja.

    2. Izberite Dodaj dovoljenje.

    3. Pod API-ji, ki jih uporablja moja organizacija poiščite Media Recording for Dynamics 365 Sales in ga izberite: Posnetek zaslona možnosti snemanja medijev

    4. Dovoljenje Add Users.Read.All in izberite Dodaj dovoljenje

    opomba,

    Prepričajte se, da ste pridobili soglasje skrbnika za dovoljenje za klic obveščanje o pogovorih API v kontekstu aplikacije. Več o dovoljenjih in soglasju.

  3. Pridobite žeton za zagon API-jev obveščanje o pogovorih z uporabo aplikacije, ustvarjene v prejšnjem razdelku:

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

    Parameter scope določa ID aplikacije aplikacije obveščanje o pogovorih. Ne spreminjajte te vrednosti.

    Za več informacij o ukazu curl glejte Get Microsoft Entra ID žetonov za principale storitve.

  4. Pokličite ta obveščanje o pogovorih API, da registrirate ponudnika storitev tretje osebe:
    POST /api/v1.0/providers/tenants

    V telesu zahteve določite naslednje parametre:

    • orgID: Določite ID organizacije Dynamics 365.

    • Vrsta: Določite "po meri" za klicnike drugih proizvajalcev.

    • gostovanje: Določite vrsto gostovanja ponudnika telefonije. Na primer "oblak" ali "na mestu uporabe".

    • AccountId: Določite ID računa ponudnika telefonije.

    • CertificateSubjectName in CertificateIssuer: Določite podrobnosti potrdila ponudnika telefonije.

    • SourceIPNetwork: Določite naslov IP odjemalca SIPREC. Podajte "0.0.0.0", če ne želite omejiti naslova IP.
      Naslednji izrezek je primer telesa zahteve:

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

    Za več informacij o API-ju glejte dokumentacijo Swagger.

  5. Pokličite ta obveščanje o pogovorih API, da dobite seznam uporabnikov za snemanje:
    GET /api/v1.0/providers/users

Ko skrbnik za Dynamics 365 Sales ustvari pravilnik za snemanje, lahko ponudnik uporabi ta končna točka za filtriranje medijev, ki bodo razdeljeni na snemalnike obveščanje o pogovorih.

Korak 2: Razcepi medije (integracija SIPREC)

Obveščanje o pogovorih zapisovalniki izvajajo standardni SIPREC protokol.

Komunikacija je zavarovana s protokoloma SIPS (port 5061) in SRTP. Preverjanje pristnosti poteka z uporabo mTLS v sporočilni povezavi SIPS in temelji na potrdilu, posredovanem API-ju – kar pomeni, da mora biti ponudnik registriran, da lahko najemnik vzpostavi SIPS povezava.

Naslednji posnetek zaslona prikazuje komunikacijo med odjemalcem SIPREC in strežnikom SIPREC:

Posnetek zaslona vzorca komunikacije med odjemalcem SIPREC in strežnikom SIPREC.

Za obveščanje o pogovorih so potrebni naslednji metapodatki:

Glave:

Ime glave Opis Primer vrednosti
ID klica Enolični identifikator klica. Ta ID se uporablja za korelacijo signalov SIP in uporabniških dejanj, kot je začetek/ustavitev snemanja. efxxxxxxxxxxxxxxx
X-AccountId Enolični identifikator računa, ki mu pripada klic. Ta ID se uporablja za avtentikacijo in avtorizacijo. To je isti ID računa, registriran v API-ju za najemnika. ACxxxxxxxxxxxxxxxxxxxxxxxx

Metapodatki

Ime ključa metapodatkov Opis Primer vrednosti
Vloga Označuje, ali gre za dohodni ali odhodni klic za prodajalca. ["inbound", "outbound"]
CallerDisplayName Klicatelj prikazno ime. Če ni na voljo, se prikaže telefonska številka. Kenny Smith
CalleeDisplayName Prejemnikov prikazno ime. Če ni na voljo, se prikaže telefonska številka. Alex Baker

Tu so primeri povabil in poslovilnih sporočil z zahtevanimi glavami in metapodatki:

Sporočilo VABILO:

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

Adijo sporočilo:

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 

Podprte končne točke in regije snemalnika

Naslednja tabela navaja podprte končne točke snemalnika in njihove regije. Snemalnike, ki jih želite uporabljati, lahko konfigurirate v nastavitvah ponudnika telefonije. Če želite izvedeti, kako se to naredi za Twilio Flex, glejte korak 2: Namestite priključek SIPREC in usmerite klice v Dynamics 365.

Končna točka Regija
media.recording.dynamics.com Globalno (najbližja regija)
southeastasia.media.recording.dynamics.com Jugovzhodna Azija
australiaeast.media.recording.dynamics.com Avstralija
sam.media.recording.dynamics.com Južna Amerika
canadacentral.media.recording.dynamics.com Kanada
switzerlandnorth.media.recording.dynamics.com Švica
eastus.media.recording.dynamics.com ZDA
francecentral.media.recording.dynamics.com Francija
centralindia.media.recording.dynamics.com Indija
japaneast.media.recording.dynamics.com Japonska
uae.media.recording.dynamics.com UAE
uksouth.media.recording.dynamics.com Združeno kraljestvo
westeurope.media.recording.dynamics.com Zahodna Evropa
zaf.media.recording.dynamics.com Južnoafriška republika

Korak 3: Pošiljanje dogodkov v realnem času (integracija odjemalca klicanja)

Če želite omogočiti obveščanje o pogovorih, da zagotovi sprotni prepis in vpogledi, lahko klicalnik tretje osebe uporabi dva dogodka za obvestilo, ko se klic začne ali konča.

  • Dogodek začetka klica: Ko obveščanje o pogovorih dobi dogodek "začetek klica", bo prikazal gumb za snemanje in sprotni prepis in vpogledi.

  • Dogodek končanega klica: Ko obveščanje o pogovorih prejme dogodek "končan klic", bo Zavijanje sprožil klic in prikazal Celoten povzetek gumb za pridobitev povzetek klica in vpogledov, ustvarjenih z umetno inteligenco.

Za pošiljanje dogodkov uporabite raiseEvent API v ogrodje za integracijo kanalov za Dynamics 365 (CIF).

Tukaj je vzorec izrezek kode za pošiljanje dogodkov:

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

Preizkusite integracijo

Ko registrirate novega ponudnika pri najemniku in nastavite razcepitev SIPREC in dogodke klicalnika odjemalca, lahko preizkusite integracijo tako, da ustvarite novo politiko snemanja pri novem ponudniku.

  1. Prijavite se kot sistemski skrbnik v aplikaciji središče za prodajo.

  2. V območju Spremeni izberite Nastavitve vpogledov v prodajo.

  3. Pojdi na Globalne nastavitve> obveščanje o pogovorih. V razdelku Ponudniki klicev boste videli zunanjega ponudnika, ki ste ga registrirali.

  4. Ustvarite politiko snemanja za novega ponudnika. Za več informacij glejte Nastavite Microsoft Teams za obveščanje o pogovorih

Naslednji posnetek zaslona je primer pravilnika o snemanju za Twilio.

Posnetek zaslona pravilnika o snemanju za Twilio

Zdaj pokličite uporabnika, ki je del izbranega varnostna vloga (v našem primeru je pravilnik omogočen za vse varnostne vloge).

Ko Dynamics 365 prejme klic je začel dogodek iz klicalnika, boste imeli možnost začeti snemanje:

Posnetek zaslona obvestila za snemanje klicev

Po izbiri Zapis, si boste lahko med klicem ogledali prepis v realnem času ter celoten povzetek in vpogledi v klice na koncu klica.

Oglejte si in razumejte stran povzetek klica