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:
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.
Bifurqueu el flux d'àudio als gravadors d'Informació sobre converses mitjançant un protocol SIPREC.
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ó:
Pas 1: Registreu el proveïdor
Afegeix el permís de l'API per a la gravació multimèdia:
A l'aplicació d'ID Microsoft Entra que heu creat, aneu a Permisos de l'API.
Seleccioneu Afegeix un permís.
A API que utilitza la meva organització, cerqueu Enregistrament multimèdia per al Dynamics 365 Sales i seleccioneu-lo:
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.
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.
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.
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:
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.
Inicieu sessió com a administrador del sistema a l'aplicació Centre de vendes.
A l'àrea Canvia, seleccioneu Configuració de la informació de vendes.
Aneu a Configuració> globalInformació sobre converses. A la secció Proveïdors de trucades, veureu el proveïdor extern que heu registrat.
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.
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ó:
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.