Үшінші тарап тергіштерін Dynamics 365 жүйесімен біріктіріңіз Сұхбат интеллектісі (алдын ала қарау нұсқасы)
[Бұл мақала — шығарылым алдындағы құжаттама және ол өзгеруі мүмкін.]
Бұл біріктіру арқылы Dynamics 365 пайдаланушылары Dynamics 365 жүйесінде телефон қоңырауларын шалу және қабылдау үшін Twilio Flex сияқты үшінші тарап телефония компаниялары ұсынатын тергіштерді пайдалана алады, сондай-ақ нақты уақыттағы жасанды интеллект арқылы жасалған түсініктерді және олардың қоңырауларының қоңыраудан кейінгі бай талдауын ала алады. . Dynamics 365 Сұхбат интеллектісі туралы қосымша ақпарат алыңыз
Маңызды
- Бұл алдын ала қарау мүмкіндігі болып табылады.
- Алдын ала қарау нұсқасының мүмкіндіктері өндірісті пайдалану үшін арналмаған және функционалдық шектеулі болуы мүмкін. Бұл мүмкіндіктер қосымша пайдалану шарттарына бағынады және тұтынушылар ертерек қол жеткізу және кері байланыс орнату үшін ресми шығарылымға дейін қолжетімді болады.
Интеграция қалай жұмыс істейді
Жоғары деңгейде интеграция үш бөліктен тұрады:
Провайдерді тіркеу: Провайдер мәліметтерін тіркеңіз және Сұхбат интеллектісі API арқылы жазылатын пайдаланушылар тізімін алыңыз.
Тасымалдағышты айыру: SIPREC протоколын пайдаланып, аудио ағынды Сұхбат интеллектісі жазғыштарына бұрыңыз.
Нақты уақыттағы оқиғаларды жіберу: Нақты уақыттағы транскрипцияны және Қоңырау түсініктері тәжірибесін қосу үшін UI оқиғаларын провайдердің клиенттік интерфейсінен Dynamics 365 Сұхбат интеллектісі жүйесіне жіберіңіз.
Dynamics 365 сұхбат интеллектісі мен үшінші тарап телефония провайдері Twilio Flex арасындағы мысалды біріктіру үшін Twilio Flex қызметін Dynamics 365 сұхбат интеллектісімен біріктіру бөлімін қараңыз.
Төмендегі диаграмма интеграцияның қалай жұмыс істейтінін көрсетеді:
қадам 1: провайдерді тіркеңіз
Microsoft Entra ID қолданбасын жасаңыз.
Медиа жазу үшін API рұқсатын қосыңыз:
Сіз жасаған Microsoft Entra ID қолданбасында API рұқсаттары бөліміне өтіңіз.
Рұқсат қосу таңдаңыз.
API астында менің ұйымым іздеу Dynamics 365 Sales үшін Media Recording қолданбасын пайдаланады және оны таңдаңыз:
Қосу Users.Read.All рұқсат және Рұқсат қосу опциясын таңдаңыз.
Ескертпе
Қолданба мәтінмәнінде Сұхбат интеллектісі API-ге қоңырау шалу үшін рұқсат алу үшін әкімші келісімін алуды ұмытпаңыз. Рұқсаттар мен келісімдер туралы толығырақ ақпарат.
Алдыңғы бөлімде жасалған қолданба арқылы Сұхбат интеллектісі API интерфейстерін іске қосу үшін таңбалауышты алыңыз:
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>'
scope
параметр Сұхбат интеллектісі қолданбасының қолданба идентификаторын көрсетеді. Бұл мәнді өзгертпеңіз.Curl пәрмені туралы қосымша ақпаратты Get Microsoft Entra Қызмет жетекшілеріне арналған ID таңбалауыштарын бөлімінен қараңыз.
Үшінші тарап қызмет провайдерін тіркеу үшін келесі Сұхбат интеллектісі API қызметіне қоңырау шалыңыз:
POST /api/v1.0/providers/tenants
Сұрау мәтінінде келесі параметрлерді көрсетіңіз:
orgID: Dynamics 365 ұйым идентификаторын көрсетіңіз.
Түр: Үшінші тарап тергіштері үшін "арнайы" параметрін көрсетіңіз.
хостинг: Телефония провайдерінің хостинг түрін көрсетіңіз. Мысалы, "бұлт" немесе "жергілікті".
AccountId: Телефония провайдерінің тіркелгі идентификаторын көрсетіңіз.
CerficateSubjectName және CertificateIssuer: Телефония провайдерінің сертификат мәліметтерін көрсетіңіз.
SourceIPNetwork: SIPREC клиентінің IP мекенжайын көрсетіңіз. IP мекенжайын шектегіңіз келмесе, "0.0.0.0" мәнін көрсетіңіз.
Келесі үзінді сұрау органының мысалы болып табылады:{ "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" } }
API туралы қосымша ақпаратты Swagger құжаттамасын қараңыз.
Жазылатын пайдаланушылар тізімін алу үшін келесі Сұхбат интеллектісі API қызметіне қоңырау шалыңыз:
GET /api/v1.0/providers/users
Dynamics 365 Sales әкімшісі жазу саясатын жасағаннан кейін провайдер Сұхбат интеллектісі жазу құрылғыларына қосылатын медианы сүзу үшін осы соңғы нүктені пайдалана алады.
қадам 2: Мультимедианы айыру (SIPREC интеграциясы)
Сұхбат интеллектісі жазу құрылғылары стандартты SIPREC протоколын жүзеге асырады.
Байланыс SIPS (порт 5061) және SRTP хаттамалары арқылы қорғалған. Аутентификация SIPS хабарлама қосылымында mTLS пайдаланылады және API-ге берілген сертификатқа негізделеді – бұл провайдер орнату үшін жалға алушыға тіркелуі керек дегенді білдіреді. SIPS қосылымы.
Келесі скриншот SIPREC клиенті мен SIPREC сервері арасындағы байланысты көрсетеді:
Сұхбат интеллектісі үшін келесі метадеректер қажет:
Тақырыптар:
Тақырып атауы | Сипаттама | Мән мысалы |
---|---|---|
Қоңырау идентификаторы | Қоңыраудың бірегей идентификаторы. Бұл идентификатор SIP сигналдарын және жазуды бастау/тоқтату сияқты пайдаланушы әрекеттерін корреляциялау үшін пайдаланылады. | efxxxxxxxxxxxxx |
X-AccountId | Қоңырау тиесілі тіркелгінің бірегей идентификаторы. Бұл идентификатор аутентификация және авторизация үшін пайдаланылады. Бұл жалға алушы үшін API жүйесінде тіркелген бірдей тіркелгі идентификаторы. | ACxxxxxxxxxxxxxxxxxxxxxx |
Метадеректер
Метадеректер кілтінің атауы | Сипаттама | Мән мысалы |
---|---|---|
Рөл | Бұл сатушы үшін кіріс немесе шығыс қоңырау екенін көрсетеді. | ["кіріс", "шығыс"] |
CallerDisplayName | Қоңырау шалушының көрсетілетін аты. Қолжетімсіз болса, телефон нөмірі көрсетіледі. | Кенни Смит |
CalleeDisplayName | Алушының көрсетілетін аты. Қолжетімсіз болса, телефон нөмірі көрсетіледі. | Алекс Бейкер |
Мұнда қажетті тақырыптар мен метадеректері бар шақыру және қоштасу хабарларының мысалдары берілген:
ШАҚЫРУ хабары:
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--
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
Диктофонның соңғы нүктелері мен аймақтарына қолдау көрсетіледі
Төмендегі кестеде қолдау көрсетілетін жазу құрылғысының соңғы нүктелері мен олардың аймақтары берілген. Пайдаланғыңыз келетін жазғыштарды телефония провайдерінің параметрлерінде конфигурациялауға болады. Бұл Twilio Flex үшін қалай орындалатыны туралы білу үшін қараңыз қадам 2: SIPREC қосқышын орнатыңыз және қоңырауларды Dynamics 365 жүйесіне бағыттаңыз.
Соңғы нүкте | Өңір |
---|---|
media.recording.dynamics.com | Ғаламдық (ең жақын аймақ) |
southeastasia.media.recording.dynamics.com | Оңтүстік-шығыс Азия |
australiaeast.media.recording.dynamics.com | Австралия |
sam.media.recording.dynamics.com | Оңтүстік Америка |
canadacentral.media.recording.dynamics.com | Канада |
switzerlandnorth.media.recording.dynamics.com | Швейцария |
eastus.media.recording.dynamics.com | АҚШ |
francecentral.media.recording.dynamics.com | Франция |
centralindia.media.recording.dynamics.com | Үндістан |
japaneast.media.recording.dynamics.com | Жапония |
uae.media.recording.dynamics.com | UAE |
uksouth.media.recording.dynamics.com | Біріккен Корольдік |
westeurope.media.recording.dynamics.com | Батыс Еуропа |
zaf.media.recording.dynamics.com | Оңтүстік Африка Республикасы |
қадам 3: Нақты уақыттағы оқиғаларды жіберу (Нөмір теруші клиентті біріктіру)
Сұхбат интеллектісі қолданбасына нақты уақыттағы транскрипция және мәліметтер беруіне рұқсат беру үшін үшінші тарап тергіші қоңырау басталған немесе аяқталған кезде хабарлау үшін екі оқиғаны пайдалана алады.
Қоңырау басталған оқиға: Сұхбат интеллектісі "қоңырау басталды" оқиғасын алған кезде, ол жазу түймесі мен нақты уақыттағы транскрипция және мәліметтер көрсетеді.
Қоңырау аяқталған оқиға: Сұхбат интеллектісі "қоңырау аяқталды" оқиғасын алған кезде, ол Орау қоңырауды қосады және Толық қорытынды AI жасаған қоңыраулар жиынтығы және түсініктерді алу үшін түймесін басыңыз.
Оқиғаларды жіберу үшін пайдаланыңыз highEvent Dynamics 365 арна біріктіру платформасы (CIF) ішіндегі API.
Мұнда оқиғаларды жіберуге арналған код үзіндісі үлгісі берілген:
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);
});
Интеграцияны сынау
Жаңа провайдерді жалға алушымен тіркегеннен және SIPREC айыру мен клиентті теру оқиғаларын орнатқаннан кейін, жаңа провайдермен жаңа жазу саясатын жасау арқылы біріктіруді тексеруге болады.
Сату орталығы қолданбасында жүйе әкімшісі ретінде жүйеге кіріңіз.
Аймақты өзгерту ішінен таңдаңыз Сатылым туралы ақпарат параметрлері.
өтіңіз Ғаламдық параметрлер> Сұхбат интеллектісі. Қоңырау шалу провайдерлері бөлімінде сіз тіркелген үшінші тарап провайдерін көресіз.
Жаңа провайдер үшін жазу саясатын жасаңыз. Қосымша ақпарат алу үшін қараңыз Орнату Microsoft Teams Сұхбат интеллектісі үшін
Келесі скриншот Twilio үшін жазу саясатының мысалы болып табылады.
Енді таңдалған қауіпсіздік рөлі бөлігі болып табылатын пайдаланушыға қоңырау шалыңыз (біздің мысалда саясат барлық қауіпсіздік рөлдері үшін қосылған).
Dynamics 365 қабылдаған кезде қоңырау басталды Нөмір терушіден оқиға болған кезде, жазуды бастау опциясы болады:
Таңдағаннан кейін Жазба, қоңырау кезінде нақты уақыттағы транскрипцияны және толық қорытындыны және қоңыраудың соңында Қоңырау түсініктері көре аласыз.