Бөлісу құралы:


Үшінші тарап тергіштерін Dynamics 365 сөйлесу интеллектісімен біріктіру (алдын ала қарау)

[Бұл мақала — шығарылым алдындағы құжаттама және ол өзгеруі мүмкін.]

Бұл біріктіру арқылы Dynamics 365 пайдаланушылары Dynamics 365 жүйесінде телефон қоңырауларын шалу және қабылдау үшін Twilio Flex сияқты үшінші тарап телефония компаниялары ұсынатын тергіштерді пайдалана алады, сондай-ақ нақты уақыттағы жасанды интеллект арқылы жасалған түсініктерді және олардың қоңырауларының қоңыраудан кейінгі бай талдауын ала алады. . Dynamics 365 сөйлесу интеллектісі туралы қосымша ақпарат алыңыз

Маңызды

  • Бұл алдын ала қарау мүмкіндігі болып табылады.
  • Алдын ала қарау мүмкіндіктері өндірісті пайдалану үшін арналмаған және функционалдық шектеулі болуы мүмкін. Бұл мүмкіндіктер қосымша пайдалану шарттарына бағынады және тұтынушылар ертерек қол жеткізу және кері байланыс орнату үшін ресми шығарылымға дейін қолжетімді.

Интеграция қалай жұмыс істейді

Жоғары деңгейде интеграция үш бөліктен тұрады:

  1. Провайдерді тіркеу: Провайдер мәліметтерін тіркеңіз және сөйлесу интеллект API арқылы жазылатын пайдаланушылар тізімін алыңыз.

  2. Тасымалдағышты айыру: SIPREC протоколын пайдаланып, дыбыс ағынын сөйлесу интеллектінің рекордерлеріне ауыстырыңыз.

  3. Нақты уақыттағы оқиғаларды жіберу: Нақты уақыттағы транскрипцияны және қоңыраулар туралы мәліметтер тәжірибесін қосу үшін UI оқиғаларын провайдердің клиенттік интерфейсінен Dynamics 365 сөйлесу интеллектіне жіберіңіз.

Dynamics 365 сөйлесу интеллектісі мен үшінші тарап телефония провайдері Twilio Flex арасындағы мысалды біріктіру үшін Twilio Flex-ті Dynamics 365 сөйлесу интеллектісімен біріктіру бөлімін қараңыз.

Төмендегі диаграмма интеграцияның қалай жұмыс істейтінін көрсетеді:

Интегралдық ағынды бейнелейтін диаграмма

1-қадам: провайдерді тіркеңіз

  1. Microsoft Entra ID қолданбасын жасаңыз.

  2. Медиа жазу үшін API рұқсатын қосыңыз:

    1. Сіз жасаған Microsoft Entra ID қолданбасында API рұқсаттары бөліміне өтіңіз.

    2. Рұқсат қосу таңдаңыз.

    3. API астында менің ұйымым іздеу Dynamics 365 Sales үшін мультимедиалық жазбаны пайдаланады және оны таңдаңыз: Медиа жазу опциясының скриншоты

    4. Қосу Users.Read.All рұқсат және Рұқсат қосу опциясын таңдаңыз.

    Ескертпе

    Қолданба мәтінмәнінде сөйлесу ақпаратының API интерфейсіне қоңырау шалу үшін рұқсат алу үшін әкімші келісімін алуды ұмытпаңыз. Рұқсаттар мен келісімдер туралы толығырақ ақпарат.

  3. Алдыңғы бөлімде жасалған қолданбаны пайдаланып Conversation Intelligence 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=f448d7e5-e313-4f90-a3eb-5dbb3277e4b3/.default' -d 'client_secret=<your app secret>'

    scope параметрі Conversation intelligence қолданбасының қолданба идентификаторын көрсетеді. Бұл мәнді өзгертпеңіз.

    Curl пәрмені туралы қосымша ақпарат алу үшін Get Microsoft Entra Қызмет жетекшілеріне арналған ID таңбалауыштарын қараңыз.

  4. Үшінші тарап қызмет провайдерін тіркеу үшін келесі сөйлесу барлау 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 құжаттамасын қараңыз.

  5. Жазылатын пайдаланушылар тізімін алу үшін келесі сөйлесу барлау API қызметіне қоңырау шалыңыз:
    GET /api/v1.0/providers/users

Dynamics 365 Sales әкімшісі жазу саясатын жасағаннан кейін, провайдер осы соңғы нүктені сөйлесу ақпаратының жазу құрылғыларына қосылатын медианы сүзу үшін пайдалана алады.

2-қадам: Тасымалдағышты айыру (SIPREC интеграциясы)

Conversation Intelligence жазбалары стандартты SIPREC протоколын жүзеге асырады.

Байланыс SIPS (порт 5061) және SRTP хаттамалары арқылы қорғалған. Аутентификация SIPS хабарлама қосылымында mTLS қолданылады және API-ге берілген сертификатқа негізделеді – бұл провайдер орнату үшін жалға алушыға тіркелуі керек дегенді білдіреді. SIPS қосылымы.

Келесі скриншот SIPREC клиенті мен SIPREC сервері арасындағы байланысты көрсетеді:

SIPREC клиенті мен SIPREC сервері арасындағы үлгі байланысының скриншоты.

Сөйлесу интеллектісі үшін келесі метадеректер қажет:

Тақырыптар:

Тақырып атауы Сипаттама Мән мысалы
Қоңырау идентификаторы Қоңыраудың бірегей идентификаторы. Бұл идентификатор SIP сигналдарын және жазуды бастау/тоқтату сияқты пайдаланушы әрекеттерін корреляциялау үшін пайдаланылады. efxxxxxxxxxxxxxx
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 Channel Integration Framework (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 айыру мен клиентті теру оқиғаларын орнатқаннан кейін, жаңа провайдермен жаңа жазу саясатын жасау арқылы біріктіруді тексеруге болады.

  1. Sales Hub қолданбасында жүйе әкімшісі ретінде жүйеге кіріңіз.

  2. Аймақты өзгерту ішінен таңдаңыз Сатылым туралы ақпарат параметрлері.

  3. Бару Ғаламдық параметрлер> Әңгімелесу интеллектісі. Қоңырау шалу провайдерлері бөлімінде сіз тіркелген үшінші тарап провайдерін көресіз.

  4. Жаңа провайдер үшін жазу саясатын жасаңыз. Қосымша ақпарат алу үшін қараңыз Орнату Microsoft Teams сөйлесу барлауы үшін

Келесі скриншот Twilio үшін жазу саясатының мысалы болып табылады.

Twilio үшін жазу саясатының скриншоты

Енді таңдалған қауіпсіздік рөлі бөлігі болып табылатын пайдаланушыға қоңырау шалыңыз (біздің мысалда саясат барлық қауіпсіздік рөлдері үшін қосылған).

Dynamics 365 қабылдаған кезде қоңырау басталды Нөмір терушіден оқиға болған кезде, жазуды бастау опциясы болады:

Қоңырауларды жазу үшін хабарландырудың скриншоты

Таңдағаннан кейін Жазба, қоңырау кезінде нақты уақыттағы транскрипцияны және қоңыраудың соңында толық қорытынды мен қоңырау туралы түсініктерді көре аласыз.

Келесіні де қараңыз:

Қоңыраулар туралы қорытынды бетін қараңыз және түсініңіз