Comparteix a través de


Integrar marcadors de tercers amb Dynamics 365 Informació sobre converses (versió preliminar)

[Aquest article forma part de la documentació preliminar i està subjecte a canvis.]

Amb aquesta integració, els usuaris del Dynamics 365 poden utilitzar marcadors proporcionats per empreses de telefonia de tercers com Twilio Flex, per fer i rebre trucades telefòniques al Dynamics 365 i obtenir informació generada per IA en temps real i anàlisis posteriors a la trucada de les seves trucades. Més informació sobre Dynamics 365 Informació sobre converses

Important

  • Aquesta és una característica de visualització prèvia.
  • Les característiques en versió preliminar no estan dissenyades per a un entorn de producció i poden tenir una funcionalitat restringida. Aquestes funcions estan subjectes a condicions d'ús addicionals i estan disponibles abans d'un llançament oficial perquè els clients puguin obtenir accés anticipat i proporcionar comentaris.

Com funciona la integració

A un alt nivell, la integració consta de tres parts:

  1. Registra el proveïdor: Registra les dades del proveïdor i aconsegueix que la llista d'usuaris es registri mitjançant l'API d'Informació sobre converses.

  2. Bifurqueu el flux d'àudio als gravadors d'Informació sobre converses mitjançant un protocol SIPREC.

  3. Envia esdeveniments en temps real: per habilitar la transcripció en temps real i l'experiència Informació detallada de la trucada, envia esdeveniments d'interfície d'usuari des de la interfície d'usuari del client del proveïdor a Dynamics 365 Informació sobre converses.

Per obtenir un exemple d'integració entre Dynamics 365 Informació sobre converses i un proveïdor de telefonia de tercers, Twilio Flex, vegeu Integrar Twilio Flex amb Dynamics 365 Informació sobre converses.

El diagrama següent il·lustra com funciona la integració:

Diagrama que representa el flux d'integració

Pas 1: Registreu el proveïdor

  1. Creeu una Microsoft Entra aplicació d'identificació.

  2. Afegeix el permís de l'API per a la gravació multimèdia:

    1. A l'aplicació d'ID Microsoft Entra que heu creat, aneu a Permisos de l'API.

    2. Seleccioneu Afegeix un permís.

    3. A API que utilitza la meva organització, cerqueu Enregistrament multimèdia per al Dynamics 365 Sales i seleccioneu-lo: Captura de pantalla de l'opció de gravació multimèdia

    4. Afegeix el permís Users.Read.All i selecciona Afegeix el permís

    Nota

    Assegureu-vos d'obtenir el consentiment de l'administrador per obtenir el permís per poder trucar a l'API d'Informació sobre converses en el context de l'aplicació. Obteniu més informació sobre els permisos i el consentiment.

  3. Obteniu el testimoni per executar les API d'Informació sobre converses mitjançant l'aplicació creada a la secció anterior:

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

    El scope paràmetre especifica l'identificador d'aplicació de l'aplicació Informació sobre converses. No canvieu aquest valor.

    Per obtenir més informació sobre l'ordre curl, vegeu Obtenció de Microsoft Entra testimonis d'identificador per a entitats de servei.

  4. Truqueu a l'API d'Informació sobre converses següent per registrar el proveïdor de serveis de tercers:
    POST /api/v1.0/providers/tenants

    Especifiqueu els paràmetres següents al cos de la sol·licitud:

    • orgID: Especifiqueu l'identificador de l'organització del Dynamics 365.

    • Tipus: Especifiqueu "personalitzat" per als marcadors de tercers.

    • hosting: Especifiqueu el tipus d'allotjament del proveïdor de telefonia. Per exemple, "núvol" o "local".

    • AccountId: Especifiqueu l'identificador de compte del proveïdor de telefonia.

    • CerfificateSubjectName i CertificateIssuer: Especifiqueu les dades del certificat del proveïdor de telefonia.

    • SourceIPNetwork: Especifiqueu l'adreça IP del client SIPREC. Especifiqueu "0.0.0.0" si no voleu restringir l'adreça IP.
      El fragment següent és un exemple del cos de la sol·licitud:

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

    Per obtenir més informació sobre l'API, consulteu la documentació deSwagger.

  5. Truqueu a l'API d'Informació sobre converses següent per obtenir la llista d'usuaris per gravar:
    GET /api/v1.0/providers/users

Després que l'administrador del Dynamics 365 Sales creï la norma d'enregistrament, el proveïdor pot utilitzar aquest punt final per filtrar els mitjans que es bifurcaran als gravadors d'Informació sobre converses.

Pas 2: Bifurcació del suport (integració SIPREC)

Informació sobre converses Enregistradors implementen l'estàndard Protocol SIPREC.

La comunicació està protegida mitjançant els protocols SIPS (port 5061) i SRTP. L'autenticació es fa mitjançant mTLS a la connexió de missatges SIPS i es basa en el certificat proporcionat a l'API, el que significa que el proveïdor ha d'estar registrat perquè un inquilí estableixi la connexió SIPS.

La captura de pantalla següent il·lustra la comunicació entre el client SIPREC i el servidor SIPREC:

Captura de pantalla d'una comunicació d'exemple entre el client SIPREC i el servidor SIPREC.

Les metadades següents són necessàries per a la Informació sobre converses:

Capçaleres:

Nom de la capçalera Descripció Exemple de valor
Identificador de trucada Identificador únic de la trucada. Aquest identificador s'utilitza per correlacionar els senyals SIP i les accions de l'usuari, com ara iniciar/aturar la gravació. efxxxxxxxxxxxxx
X-AccountId Identificador únic del compte al qual pertany la trucada. Aquest identificador s'utilitza per a l'autenticació i l'autorització. Aquest és el mateix identificador de compte registrat a l'API per a l'inquilí. ACxxxxxxxxxxxxxxx

Metadades

Nom de la clau de metadades Descripció Exemple de valor
Funció Indica si es tracta d'una trucada entrant o sortint. ["entrada", "sortida"]
CallerDisplayName Nom de visualització de la persona que truca. Si no està disponible, es mostra el número de telèfon. Kenny Smith
CalleeDisplayName Nom de visualització del destinatari. Si no està disponible, es mostra el número de telèfon. Alex Baker

Aquests són exemples de missatges d'invitació i adéu amb les capçaleres i metadades necessàries:

Missatge CONVIDA:

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

Missatge d'adéu:

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 

S'admeten els punts finals i les regions de la gravadora

A la taula següent s'enumeren els punts finals de gravació admesos i les seves regions. Podeu configurar les gravadores que voleu utilitzar a la configuració del vostre proveïdor de telefonia. Per obtenir informació sobre com es fa això per al Twilio Flex, vegeu Pas 2: Instal·lar el connector SIPREC i encaminar les trucades al Dynamics 365.

Extrem Regió
media.recording.dynamics.com Global (regió més propera)
southeastasia.media.recording.dynamics.com Sud-est Asiàtic
australiaeast.media.recording.dynamics.com Austràlia
sam.media.recording.dynamics.com Amèrica del Sud
canadacentral.media.recording.dynamics.com Canadà
switzerlandnorth.media.recording.dynamics.com Suïssa
eastus.media.recording.dynamics.com EUA
francecentral.media.recording.dynamics.com França
centralindia.media.recording.dynamics.com Índia
japaneast.media.recording.dynamics.com Japó
uae.media.recording.dynamics.com EAU
uksouth.media.recording.dynamics.com Regne Unit
westeurope.media.recording.dynamics.com Europa de l'Est
zaf.media.recording.dynamics.com República de Sud-àfrica

Pas 3: Envia esdeveniments en temps real (integració del client de Dialer)

Per permetre que la Informació sobre converses proporcioni conclusions i transcripció en temps real, el marcador de tercers pot utilitzar dos esdeveniments per notificar quan comença o acaba una trucada.

  • Esdeveniment d'inici de trucada: Quan la Informació sobre converses obté l'esdeveniment "trucada iniciada", mostrarà el botó de gravació i la transcripció i les conclusions i transcripció en temps real.

  • Esdeveniment de trucada finalitzada: quan la Informació sobre converses obté l'esdeveniment "trucada finalitzada", Empaqueta la trucada i mostrarà el botó Resum complet per obtenir el resum de la trucada generat per IA i les estadístiques.

Per enviar els esdeveniments, utilitzeu l'API raiseEvent al Marc d'integració del canal del Dynamics 365 (CIF).

Aquí teniu un fragment de codi d'exemple per enviar els esdeveniments:

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

Prova la integració

Després de registrar el nou proveïdor amb l'inquilí i configurar la bifurcació SIPREC i els esdeveniments de marcatge del client, podeu provar la integració creant una nova política d'enregistrament amb el nou proveïdor.

  1. Inicieu sessió com a administrador del sistema a l'aplicació Centre de vendes.

  2. A l'àrea Canvia, seleccioneu Configuració de la informació de vendes.

  3. Aneu a Configuració> globalInformació sobre converses. A la secció Proveïdors de trucades, veureu el proveïdor extern que heu registrat.

  4. Creeu una norma de registre per al nou proveïdor. Per obtenir més informació, vegeu Configurar Microsoft Teams la Informació sobre converses

La captura de pantalla següent és un exemple d'una política d'enregistrament per a Twilio.

Captura de pantalla d'una política d'enregistrament per a Twilio

Ara, truqueu a un usuari que formi part de la funció de seguretat seleccionada (en el nostre exemple, la norma està habilitada per a totes les funcions de seguretat).

Quan el Dynamics 365 rebi l'esdeveniment callStarted del marcador, tindreu l'opció d'iniciar la gravació:

Captura de pantalla de la notificació per gravar trucades

Després de seleccionar Grava, podreu veure la transcripció en temps real durant la trucada i un resum complet i Informació detallada de la trucada al final de la trucada.

Veure i entendre la pàgina resum de la trucada