Dynamics 365 के साथ तृतीय-पक्ष डायलर एकीकृत करें वार्तालाप इंटेलिजेंस (पूर्वावलोकन)
[यह आलेख रिलीज़-पूर्व दस्तावेज़ है और परिवर्तन के अधीन है.]
इस एकीकरण के साथ, Dynamics 365 उपयोगकर्ता, Dynamics 365 में फ़ोन कॉल करने और प्राप्त करने के लिए, Twilio Flex जैसी तृतीय-पक्ष टेलीफ़ोनी कंपनियों द्वारा प्रदान किए गए डायलर का उपयोग कर सकते हैं, और अपने कॉल के वास्तविक समय में AI-जनरेटेड अंतर्दृष्टि और समृद्ध पोस्ट-कॉल विश्लेषण प्राप्त कर सकते हैं। Dynamics 365 के बारे में अधिक जानें वार्तालाप इंटेलिजेंस
महत्त्वपूर्ण
- यह एक पूर्वावलोकन सुविधा है.
- पूर्वावलोकन सुविधाएं उत्पादन उपयोग के लिए नहीं हैं और उनकी कार्यक्षमता सीमित हो सकती है. ये सुविधाएँ उपयोग की अनुपूरक शर्तों के अधीन हैं और आधिकारिक रिलीज़ से पहले उपलब्ध हैं ताकि ग्राहक शीघ्र पहुँच प्राप्त कर सकें और प्रतिक्रिया दे सकें।
एकीकरण कैसे काम करता है
उच्च स्तर पर एकीकरण में तीन भाग होते हैं:
प्रदाता को पंजीकृत करें: प्रदाता विवरण पंजीकृत करें और वार्तालाप इंटेलिजेंस API का उपयोग करके रिकॉर्ड की जाने वाली उपयोगकर्ता सूची प्राप्त करें।
मीडिया को फोर्क करें: SIPREC प्रोटोकॉल का उपयोग करके ऑडियो स्ट्रीम को वार्तालाप इंटेलिजेंस रिकॉर्डर में फोर्क करें।
वास्तविक समय ईवेंट भेजें: वास्तविक समय ट्रांसक्रिप्शन और कॉल इनसाइट्स अनुभव को सक्षम करने के लिए, प्रदाता के क्लाइंट UI से Dynamics 365 वार्तालाप इंटेलिजेंस पर UI ईवेंट भेजें.
Dynamics 365 वार्तालाप इंटेलिजेंस और एक तृतीय-पक्ष टेलीफ़ोनी प्रदाता, Twilio Flex के बीच एकीकरण के उदाहरण के लिए, Twilio Flex को Dynamics 365 वार्तालाप इंटेलिजेंस के साथ एकीकृत करें देखें.
निम्नलिखित चित्र दर्शाता है कि एकीकरण कैसे काम करता है:
चरण 1: प्रदाता को पंजीकृत करें
मीडिया रिकॉर्डिंग के लिए 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
पैरामीटर वार्तालाप इंटेलिजेंस ऐप की एप्लिकेशन आईडी निर्दिष्ट करता है। इस मान को न बदलें.कर्ल कमांड के बारे में अधिक जानकारी के लिए, सेवा प्रिंसिपलों के लिए आईडी टोकन प्राप्त करें Microsoft Entra देखें।
तृतीय-पक्ष सेवा प्रदाता को पंजीकृत करने के लिए निम्नलिखित वार्तालाप इंटेलिजेंस 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 के बारे में अधिक जानकारी के लिए, स्वैगर दस्तावेज़ देखें।
रिकॉर्ड करने के लिए उपयोगकर्ताओं की सूची प्राप्त करने के लिए निम्नलिखित वार्तालाप इंटेलिजेंस API को कॉल करें:
GET /api/v1.0/providers/users
Dynamics 365 Sales व्यवस्थापक द्वारा रिकॉर्डिंग नीति बनाए जाने के बाद, प्रदाता इस एंडपॉइंट का उपयोग उस मीडिया को फ़िल्टर करने के लिए कर सकता है जिसे वार्तालाप इंटेलिजेंस रिकॉर्डर में फ़ॉर्क किया जाएगा.
चरण 2: मीडिया को फोर्क करें (SIPREC एकीकरण)
वार्तालाप इंटेलिजेंस रिकॉर्डर मानक SIPREC प्रोटोकॉल को कार्यान्वित करते हैं।
संचार को SIPS (पोर्ट 5061) और SRTP प्रोटोकॉल का उपयोग करके सुरक्षित किया जाता है। प्रमाणीकरण SIPS संदेश कनेक्शन में mTLS का उपयोग करके किया जाता है, और यह API को प्रदान किए गए प्रमाणपत्र पर आधारित होता है - जिसका अर्थ है कि प्रदाता को SIPS कनेक्शन स्थापित करने के लिए टेनेंट के लिए पंजीकृत होना चाहिए।
निम्नलिखित स्क्रीनशॉट 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 फोर्किंग और क्लाइंट डायलर ईवेंट सेट अप करने के बाद, आप नए प्रदाता के साथ एक नई रिकॉर्डिंग नीति बनाकर एकीकरण का परीक्षण कर सकते हैं।
विक्रय हब ऐप में सिस्टम एडमिनिस्ट्रेटर के रूप में लॉग इन करें।
क्षेत्र बदलें से, चुनें बिक्री अंतर्दृष्टि सेटिंग.
जाओ व्यापक सेटिंग> वार्तालाप इंटेलिजेंस. कॉल प्रदाता अनुभाग में, आपको वह तृतीय-पक्ष प्रदाता दिखाई देगा जिसे आपने पंजीकृत किया है।
नए प्रदाता के लिए रिकॉर्डिंग नीति बनाएं. अधिक जानकारी के लिए देखें स्थापित करना Microsoft Teams वार्तालाप इंटेलिजेंस के लिए
निम्नलिखित स्क्रीनशॉट ट्विलियो के लिए रिकॉर्डिंग नीति का एक उदाहरण है।
अब, उस उपयोगकर्ता को कॉल करें जो चयनित सुरक्षा भूमिका का हिस्सा है (हमारे उदाहरण में, नीति सभी सुरक्षा भूमिकाओं के लिए सक्षम है)।
जब Dynamics 365 को प्राप्त होता है कॉल शुरू हुआ डायलर से ईवेंट पर क्लिक करने पर, आपके पास रिकॉर्डिंग शुरू करने का विकल्प होगा:
चयन करने के बाद अभिलेख, आप कॉल के दौरान वास्तविक समय में ट्रांसक्रिप्शन देख पाएंगे और कॉल के अंत में पूर्ण सारांश और कॉल इनसाइट्स देख पाएंगे।