इसके माध्यम से साझा किया गया


Dynamics 365 के साथ तृतीय-पक्ष डायलर एकीकृत करें वार्तालाप इंटेलिजेंस (पूर्वावलोकन)

[यह आलेख रिलीज़-पूर्व दस्तावेज़ है और परिवर्तन के अधीन है.]

इस एकीकरण के साथ, Dynamics 365 उपयोगकर्ता, Dynamics 365 में फ़ोन कॉल करने और प्राप्त करने के लिए, Twilio Flex जैसी तृतीय-पक्ष टेलीफ़ोनी कंपनियों द्वारा प्रदान किए गए डायलर का उपयोग कर सकते हैं, और अपने कॉल के वास्तविक समय में AI-जनरेटेड अंतर्दृष्टि और समृद्ध पोस्ट-कॉल विश्लेषण प्राप्त कर सकते हैं। Dynamics 365 के बारे में अधिक जानें वार्तालाप इंटेलिजेंस

महत्त्वपूर्ण

  • यह एक पूर्वावलोकन सुविधा है.
  • पूर्वावलोकन सुविधाएँ उत्पादन में उपयोग के लिए नहीं होती हैं और इनकी कार्यक्षमता प्रतिबंधित हो सकती हैं. ये सुविधाएं उपयोग की अनुपूरक शर्तों के अधीन हैं और आधिकारिक रिलीज से पहले उपलब्ध हैं ताकि ग्राहक शीघ्र पहुंच प्राप्त कर सकें और प्रतिक्रिया दे सकें।

एकीकरण कैसे काम करता है

उच्च स्तर पर एकीकरण में तीन भाग होते हैं:

  1. प्रदाता को पंजीकृत करें: प्रदाता विवरण पंजीकृत करें और वार्तालाप इंटेलिजेंस API का उपयोग करके रिकॉर्ड की जाने वाली उपयोगकर्ता सूची प्राप्त करें।

  2. मीडिया को फोर्क करें: SIPREC प्रोटोकॉल का उपयोग करके ऑडियो स्ट्रीम को वार्तालाप इंटेलिजेंस रिकॉर्डर में फोर्क करें।

  3. वास्तविक समय ईवेंट भेजें: वास्तविक समय ट्रांसक्रिप्शन और कॉल इनसाइट्स अनुभव को सक्षम करने के लिए, प्रदाता के क्लाइंट UI से Dynamics 365 वार्तालाप इंटेलिजेंस पर UI ईवेंट भेजें.

Dynamics 365 वार्तालाप इंटेलिजेंस और एक तृतीय-पक्ष टेलीफ़ोनी प्रदाता, Twilio Flex के बीच एकीकरण के उदाहरण के लिए, Twilio Flex को Dynamics 365 वार्तालाप इंटेलिजेंस के साथ एकीकृत करें देखें.

निम्नलिखित चित्र दर्शाता है कि एकीकरण कैसे काम करता है:

एकीकरण प्रवाह को दर्शाने वाला आरेख

चरण 1: प्रदाता को पंजीकृत करें

  1. एक Microsoft Entra आईडी एप्लीकेशन बनाएं.

  2. मीडिया रिकॉर्डिंग के लिए API अनुमति जोड़ें:

    1. आपके द्वारा बनाए गए Microsoft Entra ID एप्लिकेशन में, API अनुमतियाँ पर जाएँ.

    2. अनुमति जोड़ें चुनें.

    3. मेरे संगठन द्वारा उपयोग किए जाने वाले API के अंतर्गतDynamics 365 Sales के लिए मीडिया रिकॉर्डिंग खोजें और उसका चयन करें: मीडिया रिकॉर्डिंग विकल्प का स्क्रीनशॉट

    4. Users.Read.All अनुमति जोड़ें और अनुमति जोड़ें चुनें

    नोट

    ऐप संदर्भ में वार्तालाप इंटेलिजेंस API को कॉल करने में सक्षम होने के लिए व्यवस्थापक की सहमति प्राप्त करना सुनिश्चित करें। अनुमतियों और सहमति के बारे में अधिक जानें.

  3. पिछले अनुभाग में बनाए गए ऐप का उपयोग करके वार्तालाप इंटेलिजेंस 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 पैरामीटर वार्तालाप इंटेलिजेंस ऐप की एप्लिकेशन आईडी निर्दिष्ट करता है। इस मान को न बदलें.

    कर्ल कमांड के बारे में अधिक जानकारी के लिए, सेवा प्रिंसिपलों के लिए आईडी टोकन प्राप्त करें Microsoft Entra देखें।

  4. तृतीय-पक्ष सेवा प्रदाता को पंजीकृत करने के लिए निम्नलिखित वार्तालाप इंटेलिजेंस API को कॉल करें:
    POST /api/v1.0/providers/tenants

    अनुरोध बॉडी में निम्नलिखित पैरामीटर निर्दिष्ट करें:

    • orgID: Dynamics 365 संगठन ID निर्दिष्ट करें.

    • टाइप करें: तृतीय-पक्ष डायलर के लिए "कस्टम" निर्दिष्ट करें।

    • होस्टिंग: टेलीफ़ोनी प्रदाता का होस्टिंग प्रकार निर्दिष्ट करें. उदाहरण के लिए, "क्लाउड" या "ऑन-प्रिमाइसेस"।

    • AccountId: टेलीफ़ोनी प्रदाता की खाता आईडी निर्दिष्ट करें.

    • CerfificateSubjectName और CertificateIssuer: टेलीफ़ोनी प्रदाता का प्रमाणपत्र विवरण निर्दिष्ट करें.

    • SourceIPNetwork: SIPREC क्लाइंट का 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 के बारे में अधिक जानकारी के लिए, स्वैगर दस्तावेज़ देखें।

  5. रिकॉर्ड करने के लिए उपयोगकर्ताओं की सूची प्राप्त करने के लिए निम्नलिखित वार्तालाप इंटेलिजेंस API को कॉल करें:
    GET /api/v1.0/providers/users

Dynamics 365 Sales व्यवस्थापक द्वारा रिकॉर्डिंग नीति बनाए जाने के बाद, प्रदाता इस एंडपॉइंट का उपयोग उस मीडिया को फ़िल्टर करने के लिए कर सकता है जिसे वार्तालाप इंटेलिजेंस रिकॉर्डर में फ़ॉर्क किया जाएगा.

चरण 2: मीडिया को फोर्क करें (SIPREC एकीकरण)

वार्तालाप इंटेलिजेंस रिकॉर्डर मानक SIPREC प्रोटोकॉल को कार्यान्वित करते हैं।

संचार को SIPS (पोर्ट 5061) और SRTP प्रोटोकॉल का उपयोग करके सुरक्षित किया जाता है। प्रमाणीकरण SIPS संदेश कनेक्शन में mTLS का उपयोग करके किया जाता है, और यह API को प्रदान किए गए प्रमाणपत्र पर आधारित होता है - जिसका अर्थ है कि प्रदाता को SIPS कनेक्शन स्थापित करने के लिए टेनेंट के लिए पंजीकृत होना चाहिए।

निम्नलिखित स्क्रीनशॉट SIPREC क्लाइंट और SIPREC सर्वर के बीच संचार को दर्शाता है:

SIPREC क्लाइंट और SIPREC सर्वर के बीच नमूना संचार का स्क्रीनशॉट।

वार्तालाप इंटेलिजेंस के लिए निम्नलिखित मेटाडेटा आवश्यक हैं:

हेडर:

हेडर का नाम विवरण मूल्य उदाहरण
कॉल-आईडी कॉल का विशिष्ट पहचानकर्ता. इस आईडी का उपयोग एसआईपी सिग्नलों और उपयोगकर्ता क्रियाओं, जैसे रिकॉर्डिंग शुरू/बंद करने, के बीच संबंध स्थापित करने के लिए किया जाता है। एफ़xxxxxxxxxxxxx
X-खाताआईडी कॉल जिस खाते से संबंधित है उसका विशिष्ट पहचानकर्ता. इस आईडी का उपयोग प्रमाणीकरण और प्राधिकरण के लिए किया जाता है। यह वही खाता आईडी है जो टेनेंट के लिए API में पंजीकृत है। एसीxxxxxxxxxxxxxxxxxxxxx

मेटाडाटा

मेटाडेटा कुंजी नाम विवरण मूल्य उदाहरण
भूमिका यह इंगित करता है कि विक्रेता के लिए यह इनबाउंड या आउटबाउंड कॉल है। ["भीतर का बाहर का"]
कॉलरडिस्प्लेनाम कॉलर प्रदर्शन नाम. यदि उपलब्ध न हो तो फ़ोन नंबर प्रदर्शित किया जाता है. केनी स्मिथ
कॉलीडिस्प्लेनाम प्राप्तकर्ता का प्रदर्शन नाम. यदि उपलब्ध न हो तो फ़ोन नंबर प्रदर्शित किया जाता है. एलेक्स बेकर

यहां आवश्यक हेडर और मेटाडेटा के साथ आमंत्रण और अलविदा संदेशों के उदाहरण दिए गए हैं:

आमंत्रण संदेश:

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 

समर्थित रिकॉर्डर समापन बिंदु और क्षेत्र

निम्न तालिका समर्थित रिकॉर्डर समापन बिंदुओं और उनके क्षेत्रों को सूचीबद्ध करती है। आप अपने टेलीफोनी प्रदाता सेटिंग्स में उन रिकॉर्डर्स को कॉन्फ़िगर कर सकते हैं जिन्हें आप उपयोग करना चाहते हैं। ट्विलियो फ्लेक्स के लिए यह कैसे किया जाता है, इसके बारे में जानने के लिए देखें चरण 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-जनरेटेड कॉल का सारांश और अंतर्दृष्टि प्राप्त करने के लिए बटन।

ईवेंट भेजने के लिए, का उपयोग करें इवेंट बढ़ाएँ 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 फोर्किंग और क्लाइंट डायलर ईवेंट सेट अप करने के बाद, आप नए प्रदाता के साथ एक नई रिकॉर्डिंग नीति बनाकर एकीकरण का परीक्षण कर सकते हैं।

  1. विक्रय हब ऐप में सिस्टम एडमिनिस्ट्रेटर के रूप में लॉग इन करें।

  2. परिवर्तन क्षेत्र से, चुनें बिक्री अंतर्दृष्टि सेटिंग.

  3. जाओ व्यापक सेटिंग> वार्तालाप इंटेलिजेंस. कॉल प्रदाता अनुभाग में, आपको वह तृतीय-पक्ष प्रदाता दिखाई देगा जिसे आपने पंजीकृत किया है।

  4. नए प्रदाता के लिए रिकॉर्डिंग नीति बनाएं. अधिक जानकारी के लिए देखें स्थापित करना Microsoft Teams वार्तालाप इंटेलिजेंस के लिए

निम्नलिखित स्क्रीनशॉट ट्विलियो के लिए रिकॉर्डिंग नीति का एक उदाहरण है।

ट्विलियो के लिए रिकॉर्डिंग नीति का स्क्रीनशॉट

अब, उस उपयोगकर्ता को कॉल करें जो चयनित सुरक्षा भूमिका का हिस्सा है (हमारे उदाहरण में, नीति सभी सुरक्षा भूमिकाओं के लिए सक्षम है)।

जब Dynamics 365 को प्राप्त होता है कॉल शुरू हुआ डायलर से ईवेंट पर क्लिक करने पर, आपके पास रिकॉर्डिंग शुरू करने का विकल्प होगा:

कॉल रिकॉर्ड करने की अधिसूचना का स्क्रीनशॉट

चयन करने के बाद अभिलेख, आप कॉल के दौरान वास्तविक समय में ट्रांस्क्रिप्शन देख पाएंगे और कॉल के अंत में एक पूर्ण सारांश और कॉल इनसाइट्स देख पाएंगे।

भी देखें

कॉल का सारांश पेज देखें और समझें