Integrujte vytáčacie programy tretích strán s inteligenciou konverzácie Dynamics 365 (ukážka)
[Tento článok je predbežnou dokumentáciou a môže sa zmeniť.]
Vďaka tejto integrácii môžu používatelia Dynamics 365 používať vytáčacie programy poskytované telefónnymi spoločnosťami tretích strán, ako je Twilio Flex, na uskutočňovanie a prijímanie telefonických hovorov v Dynamics 365 a získavať prehľady generované AI v reálnom čase a bohatú analýzu svojich hovorov po hovore. . Získajte viac informácií o konverzačnej inteligencii Dynamics 365
Dôležité
- Toto je ukážková funkcia.
- Funkcie ukážky nie sú určené na produkčné účely a môžu mať obmedzenú funkčnosť. Na tieto funkcie sa vzťahujú dodatočné podmienky používania a sú k dispozícii pred oficiálnym vydaním, aby zákazníci mohli získať skorý prístup a poskytnúť spätnú väzbu.
Ako funguje integrácia
Na vysokej úrovni sa integrácia skladá z troch častí:
Zaregistrujte poskytovateľa: Zaregistrujte podrobnosti poskytovateľa a získajte zaznamenanie zoznamu používateľov pomocou rozhrania API konverzácie.
Rozdeľovanie médií: Rozdeľovanie zvukového toku do záznamníkov inteligencie konverzácie pomocou protokolu SIPREC.
Odosielanie udalostí v reálnom čase: Ak chcete povoliť prepis a prehľad hovorov v reálnom čase, odošlite udalosti používateľského rozhrania z používateľského rozhrania klienta poskytovateľa do spravodajstva konverzácie Dynamics 365.
Príklad integrácie medzi konverzačnou inteligenciou Dynamics 365 a poskytovateľom telefónnych služieb tretej strany, Twilio Flex, nájdete v časti Integrácia Twilio Flex s konverzačnou inteligenciou Dynamics 365.
Nasledujúci diagram znázorňuje, ako integrácia funguje:
Krok 1: Zaregistrujte poskytovateľa
Pridať povolenie rozhrania API na nahrávanie médií:
V Microsoft Entra aplikácii ID, ktorú ste vytvorili, prejdite na Povolenia rozhrania API.
Vyberte Pridať povolenie.
V časti API používa moja organizácia vyhľadajte Media Recording for Dynamics 365 Sales a vyberte ho:
Pridajte Users.Read.All povolenie a vyberte Pridať povolenie
Poznámka
Uistite sa, že ste získali súhlas správcu na povolenie, aby ste mohli volať rozhranie API pre inteligenciu konverzácie v kontexte aplikácie. Prečítajte si viac o povoleniach a súhlase.
Získajte token na spustenie rozhrania Conversation Intelligence API pomocou aplikácie vytvorenej v predchádzajúcej časti:
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
určuje ID aplikácie aplikácie Conversation intelligence. Túto hodnotu nemeňte.Ďalšie informácie o príkaze curl nájdete v časti Získať Microsoft Entra ID tokeny pre principálov služieb.
Ak chcete zaregistrovať poskytovateľa služieb tretej strany, zavolajte nasledujúce rozhranie API konverzácie:
POST /api/v1.0/providers/tenants
V tele požiadavky zadajte nasledujúce parametre:
orgID: Uveďte ID organizácie Dynamics 365.
Typ: Určite „vlastné“ pre vytáčacie programy tretích strán.
hosting: Uveďte typ hostingu poskytovateľa telefónnych služieb. Napríklad „cloud“ alebo „lokálny“.
AccountId: Uveďte ID účtu poskytovateľa telefónnych služieb.
CerfificateSubjectName a CertificateIssuer: Uveďte podrobnosti certifikátu poskytovateľa telefónnej služby.
SourceIPNetwork: Uveďte IP adresu klienta SIPREC. Ak nechcete obmedziť adresu IP, zadajte „0.0.0.0“.
Nasledujúci úryvok je príkladom tela požiadavky:{ "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" } }
Ďalšie informácie o rozhraní API nájdete v dokumentácii Swagger.
Zavolaním nasledujúceho rozhrania API pre inteligenciu konverzácií získate zoznam používateľov, ktorí sa majú zaznamenať:
GET /api/v1.0/providers/users
Keď správca Dynamics 365 Sales vytvorí politiku nahrávania, poskytovateľ môže použiť tento koncový bod na filtrovanie médií, ktoré budú rozdelené do záznamov inteligencie konverzácie.
Krok 2: Rozdeľte médiá (integrácia SIPREC)
Nahrávače konverzácie Intelligence implementujú štandardný protokol SIPREC.
Komunikácia je zabezpečená pomocou protokolov SIPS (port 5061) a SRTP. Autentifikácia sa vykonáva pomocou mTLS v pripojení správ SIPS a je založená na certifikáte poskytnutom API – čo znamená, že poskytovateľ musí byť zaregistrovaný, aby mohol nájomca vytvoriť SIPS pripojenie.
Nasledujúca snímka obrazovky ilustruje komunikáciu medzi klientom SIPREC a serverom SIPREC:
Nasledujúce metadáta sú potrebné na spravodajstvo konverzácie:
Hlavičky:
Názov hlavičky | Popis | Príklad hodnoty |
---|---|---|
Call-ID | Jedinečný identifikátor hovoru. Toto ID sa používa na koreláciu signálov SIP a akcií používateľa, ako je spustenie/zastavenie nahrávania. | efxxxxxxxxxxxxx |
X-AccountId | Jedinečný identifikátor účtu, do ktorého hovor patrí. Toto ID sa používa na autentifikáciu a autorizáciu. Ide o rovnaké ID účtu zaregistrované v rozhraní API pre nájomníka. | ACxxxxxxxxxxxxxxxxxxxxxxx |
Metadáta
Názov kľúča metadát | Popis | Príklad hodnoty |
---|---|---|
Rola | Označuje, či ide o prichádzajúci alebo odchádzajúce hovor pre predajcu. | ["prichádzajúci odchádzajúci"] |
Zobrazovaný názov volajúceho | Zobrazované meno volajúceho. Ak nie je k dispozícii, zobrazí sa telefónne číslo. | Kenny Smith |
CalleeDisplayName | Zobrazované meno príjemcu. Ak nie je k dispozícii, zobrazí sa telefónne číslo. | Alex Baker |
Tu sú príklady pozvánok a správ na rozlúčku s požadovanými hlavičkami a metadátami:
INVITE správa:
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--
Správa BYE:
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
Podporované koncové body a oblasti rekordéra
V nasledujúcej tabuľke sú uvedené podporované koncové body rekordéra a ich oblasti. Rekordéry, ktoré chcete používať, môžete nakonfigurovať v nastaveniach poskytovateľa telefónnej služby. Ak sa chcete dozvedieť, ako sa to robí pre Twilio Flex, pozrite si Krok 2: Nainštalujte konektor SIPREC a smerujte hovory do Dynamics 365.
Koncový bod | Oblasť |
---|---|
media.recording.dynamics.com | Globálne (najbližší región) |
southeastasia.media.recording.dynamics.com | Juhovýchodná Ázia |
australiaeast.media.recording.dynamics.com | Austrália |
sam.media.recording.dynamics.com | Južná Amerika |
canadacentral.media.recording.dynamics.com | Kanada |
switzerlandnorth.media.recording.dynamics.com | Švajčiarsko |
eastus.media.recording.dynamics.com | USA |
francecentral.media.recording.dynamics.com | Francúzsko |
centralindia.media.recording.dynamics.com | India |
japaneast.media.recording.dynamics.com | Japonsko |
uae.media.recording.dynamics.com | UAE |
uksouth.media.recording.dynamics.com | Spojené kráľovstvo |
westeurope.media.recording.dynamics.com | Západná Európa |
zaf.media.recording.dynamics.com | Južná Afrika |
Krok 3: Odosielanie udalostí v reálnom čase (integrácia klienta Dialer)
Aby mohla inteligencia konverzácie poskytovať prepis a prehľad v reálnom čase, môže vytáčanie tretej strany použiť dve udalosti na upozorňovanie na začiatok alebo koniec hovoru.
Udalosť spustenia hovoru: Keď inteligencia konverzácie spustí udalosť „hovor začal“, zobrazí sa tlačidlo nahrávania a prepis a prehľad v reálnom čase.
Udalosť ukončenia hovoru: Keď inteligencia konverzácie dostane udalosť „ukončenie hovoru“, ukončí hovor a zobrazí Úplné zhrnutie získate súhrn hovorov a prehľady vygenerované AI.
Ak chcete odoslať udalosti, použite raiseEvent API v Dynamics 365 Channel Integration Framework (CIF).
Tu je vzor úryvok kódu na odoslanie udalostí:
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);
});
Otestujte integráciu
Po registrácii nového poskytovateľa u nájomcu a nastavení rozvetvenia SIPREC a udalostí vytáčania klienta môžete otestovať integráciu vytvorením novej politiky nahrávania s novým poskytovateľom.
Prihláste sa ako správca systému v aplikácii Centrum predaja.
V oblasti Zmeniť vyberte Nastavenia štatistík predaja.
Ísť do Globálne nastavenia> Konverzačná inteligencia. V časti Poskytovatelia hovorov uvidíte poskytovateľa tretej strany, ktorého ste zaregistrovali.
Vytvorte politiku nahrávania pre nového poskytovateľa. Ďalšie informácie nájdete v časti Nastaviť Microsoft Teams pre konverzačné spravodajstvo
Nasledujúca snímka obrazovky je príkladom politiky nahrávania pre Twilio.
Teraz zavolajte používateľovi, ktorý je súčasťou vybratého rola zabezpečenia (v našom príklade je politika povolená pre všetky roly zabezpečenia).
Keď Dynamics 365 dostane súbor hovor Začal udalosť z dialera, budete mať možnosť spustiť nahrávanie:
Po výbere Záznam, budete môcť vidieť prepis v reálnom čase počas hovoru a úplný súhrn a prehľad hovorov na konci hovoru.
Pozrite si tiež
Pripomienky
https://aka.ms/ContentUserFeedback.
Pripravujeme: V priebehu roka 2024 postupne zrušíme službu Problémy v službe GitHub ako mechanizmus pripomienok týkajúcich sa obsahu a nahradíme ju novým systémom pripomienok. Ďalšie informácie nájdete na stránke:Odoslať a zobraziť pripomienky pre