Интегриране на набирания от трети страни с разузнаване на разговори в Dynamics 365 (предварителен преглед)
[Тази статия е предварително издание на документацията и подлежи на промяна.]
С тази интеграция потребителите на Dynamics 365 могат да използват номератори, предоставени от други телефонни компании, като Twilio Flex, за да извършват и приемат телефонни обаждания в Dynamics 365 и да получават за тях в реално време генерирани от AI прозрения и задълбочен анализ след обаждане. Научете повече за Dynamics 365 разузнаване чрез разговор
Важно
- Това е функция за предварителен преглед.
- Функциите на етап преглед не са предназначени за производствена употреба и може да са с ограничени възможности. Тези функции са предмет на допълнителни условия за ползване и са налични преди официалното издание, така че клиентите да могат да получат ранен достъп и да предоставят обратна връзка.
Как работи интеграцията
На високо ниво интеграцията се състои от три части:
Регистрирайте доставчика: Регистрирайте данните за доставчика и накарайте списъка с потребители да бъде записан с помощта на API за разузнаване чрез разговор.
Разклонете мултимедията: Разклонете аудио потока към записващите устройства за разузнаване на разговор, като използвате протокол SIPREC.
Изпращане на събития в реално време: За да активирате транскрипция в реално време и аналитични данни за обаждания изживяване, изпратете събития на потребителския интерфейс от клиентския потребителски интерфейс на доставчика до Dynamics 365 разузнаване чрез разговор.
За примерна интеграция между Dynamics 365 разузнаване чрез разговор и доставчик на телефония на трета страна, Twilio Flex, вижте Интегриране на Twilio Flex с Dynamics 365 разузнаване чрез разговор.
Следната диаграма илюстрира как работи интеграцията:
Стъпка 1: Регистрирайте доставчика
Създайте приложение Microsoft Entra заидентификация.
Добавете разрешение за API за запис на мултимедия:
В Microsoft Entra приложението ID, което сте създали, отидете на API разрешения.
Изберете Добавяне на разрешение.
Под API моята организация използва търсене на Запис на мултимедия за Dynamics 365 Sales и го изберете:
Добавяне на разрешение 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 вижте Получаване Microsoft Entra на маркери за ИД за принципали на услугата.
Извикайте следния API на разузнаване чрез разговор, за да регистрирате доставчика на услуги – трето лице:
POST /api/v1.0/providers/tenants
Посочете следните параметри в основния текст на заявката:
orgID: Задайте ИД на организацията на Dynamics 365.
Тип: Посочете "персонализиран" за набиране на трети страни.
хостинг: Посочете типа хостинг на доставчика на телефония. Например "облак" или "локален".
AccountId: Посочете ИД на акаунта на доставчика на телефония.
CerfificateSubjectName и CertificateIssuer: Посочете подробностите за сертификата на доставчика на телефония.
ИзточникIPNetwork: Посочете IP адреса на клиента на SIPREC. Посочете "0.0.0.0", ако не искате да ограничавате IP адреса.
Следният фрагмент е пример за тялото на заявката:{ "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 протоколи. Удостоверяването се извършва с помощта на mTLS в SIPS съобщението и се основава на сертификата, предоставен на API – което означава, че доставчикът трябва да бъде регистриран за клиент, за да установи SIPS връзка.
Следната екранна снимка илюстрира комуникацията между клиента на SIPREC и сървъра на SIPREC:
Следните метаданни са необходими за разузнаване чрез разговор:
Заглавки:
Име на заглавката | Описание | Пример за стойност |
---|---|---|
Идентификация на повикване | Уникален идентификатор на повикването. Този идентификатор се използва за съпоставяне на SIP сигнали и действия на потребителя, като старт/стоп запис. | efxxxxxxxxxxxxxxx |
X-AccountId | Уникален идентификатор на акаунта, към който принадлежи обаждането. Този идентификатор се използва за удостоверяване и упълномощаване. Това е същият идентификатор на акаунта, регистриран в API за клиента. | ACxxxxxxxxxxx |
Метаданни
Име на ключа за метаданни | Описание | Пример за стойност |
---|---|---|
Роля | Показва дали става въпрос за входящо или изходящо повикване за продавача. | ["входящ", "изходящ"] |
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 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: Изпращане на събития в реално време (интеграция на клиента на Dialer)
За да позволи на разузнаването чрез разговори да предоставя транскрипция и аналитични данни в реално време, номераторът от друг производител може да използва две събития за известяване за началото или края на обаждането.
Събитие за стартиране на разговор: Когато разузнаване чрез разговор получи събитието "стартиране на разговора", то ще покаже бутона за запис и транскрипция и аналитични данни в реално време.
Събитие за прекратяване на разговора: Когато разузнаването чрез разговор получи събитието "разговорът приключи", той ще Опаковане разговора и ще покаже бутона Пълно обобщение , за да получи генерираното от AI резюме на обаждането и прозренията.
За да изпратите събитията, използвайте API на raiseEvent в Рамка за интеграция на канали на Dynamics 365 (CIF).
Ето примерен фрагмент от код за изпращане на събитията:
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 получи събитието callStarted от програмата за набиране, ще имате възможност да започнете записа:
След като изберете Запис, ще можете да видите транскрипцията в реално време по време на разговора и пълно резюме и аналитични данни за обаждания в края на разговора.