Ενοποίηση προγραμμάτων κλήσης τρίτων στις πληροφορίες συνομιλίας του Dynamics 365 (έκδοση προεπισκόπησης)
[Αυτό το άρθρο αποτελεί τεκμηρίωση προέκδοσης και ενδέχεται να αλλάξει.]
Με αυτήν την ενοποίηση, οι χρήστες του Dynamics 365 μπορούν να χρησιμοποιούν προγράμματος κλήσης που παρέχονται από εταιρείες τηλεφωνίας τρίτων, όπως το Twilio Flex, για να κάνουν και να λαμβάνουν τηλεφωνικές κλήσεις στο Dynamics 365 και να έχουν πληροφορίες που δημιουργούνται από AI σε πραγματικό χρόνο και εμπλουτισμένη ανάλυση μετά την κλήση των κλήσεων τους. Μάθετε περισσότερα σχετικά με τις πληροφορίες συνομιλίας Dynamics 365
Σημαντικό
- Αυτή είναι μια δυνατότητα προεπισκόπησης.
- Οι λειτουργίες προεπισκόπησης δεν προορίζονται για παραγωγική χρήση και ενδέχεται να έχουν περιορισμένη λειτουργικότητα. Αυτές οι δυνατότητες υπόκεινται στους συμπληρωματικούς όρους χρήσης και είναι διαθέσιμες πριν την επίσημη κυκλοφορία ώστε οι πελάτες να έχουν πρόσβαση από νωρίς και να κάνουν σχόλια.
Πώς λειτουργεί η ενσωμάτωση
Σε ένα υψηλό επίπεδο, η ενοποίηση αποτελείται από τρία μέρη:
Εγγραφή της υπηρεσίας παροχής: Καταχωρήστε τα στοιχεία της υπηρεσίας παροχής και κάντε εγγραφή της λίστας χρηστών χρησιμοποιώντας το API πληροφοριών συνομιλίας.
Χωρίστε τα μέσα: Χωρίστε τη ροή ήχου στις συσκευές εγγραφής πληροφοριών συνομιλίας με τη χρήση ενός πρωτοκόλλου SIPREC.
Αποστολή συμβάντων σε πραγματικό χρόνο: Για να ενεργοποιήσετε τη μεταγραφή σε πραγματικό χρόνο και την εμπειρία πληροφοριών κλήσεων, στείλτε συμβάντα περιβάλλοντος εργασίας χρήστη από το περιβάλλον εργασίας πελάτη του παρόχου στις πληροφορίες συνομιλίας του Dynamics 365.
Για ένα παράδειγμα, η ενοποίηση μεταξύ πληροφοριών συνομιλίας 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
καθορίζει το αναγνωριστικό εφαρμογής της εφαρμογής "Πληροφορίες συνομιλίας". Μην αλλάξετε αυτήν την τιμή.Για περισσότερες πληροφορίες σχετικά με την εντολή curl, δείτε Λήψη διακριτικών Microsoft Entra ID για αρχές υπηρεσίας.
Καλέστε το ΑΡΙ πληροφοριών συνομιλίας που ακολουθεί για να εγγράψετε την υπηρεσία παροχής υπηρεσιών τρίτου:
POST /api/v1.0/providers/tenants
Καθορίστε τις ακόλουθες παραμέτρους στο σώμα της αίτησης:
orgID: Καθορισμός του αναγνωριστικού οργανισμού Dynamics 365.
Τύπος: Καθορισμός "προσαρμοσμένου" για προγράμματα κλήσης τρίτων.
φιλοξενία: Καθορίστε τον τύπο φιλοξενίας της υπηρεσίας παροχής τηλεφωνίας. Για παράδειγμα, "cloud" ή "εσωτερικής εγκατάστασης".
AccountId: Καθορίστε το αναγνωριστικό λογαριασμού της υπηρεσίας παροχής τηλεφωνίας.
CerfificateSubjectName και CertificateIssuer: Καθορίστε τις λεπτομέρειες πιστοποιητικού της υπηρεσίας παροχής τηλεφωνίας.
SourceIPNetwork: Καθορίστε τη διεύθυνση 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 και των ενεργειών του χρήστη, όπως η έναρξη/διακοπή εγγραφής. | efxxxxxxxxxxxxx |
Χ-AccountId | Μοναδικό αναγνωριστικό του λογαριασμού στον οποίο ανήκει η κλήση. Αυτό το αναγνωριστικό χρησιμοποιείται για τον έλεγχο ταυτότητας και την εξουσιοδότηση. Αυτό είναι το ίδιο αναγνωριστικό λογαριασμού που είναι καταχωρημένο στο API για τον μισθωτή. | ACxxxxxxxxxxxxxxxxxxxxxxx |
Μετα-δεδομένα
Όνομα κλειδιού μεταδεδομένων | Περιγραφή | Παράδειγμα τιμής |
---|---|---|
Ρόλος | Υποδεικνύει αν πρόκειται για εισερχόμενη ή εξερχόμενη κλήση για τον πωλητή. | ["inbound", "outbound"] |
CallerDisplayName | Εμφανιζόμενο όνομα καλούντος. Εάν δεν είναι διαθέσιμο, εμφανίζεται ο αριθμός τηλεφώνου. | Kenny Smith |
CalleeDisplayName | Το εμφανιζόμενο όνομα του αποδέκτη. Εάν δεν είναι διαθέσιμο, εμφανίζεται ο αριθμός τηλεφώνου. | Alex Baker |
Ακολουθούν παραδείγματα μηνυμάτων πρόσκλησης και αποχαιρετισμού με τις απαιτούμενες κεφαλίδες και μετα-δεδομένα:
Μήνυμα INVITE:
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 | ΗΑΕ |
uksouth.media.recording.dynamics.com | Ηνωμένο Βασίλειο |
westeurope.media.recording.dynamics.com | Δυτική Ευρώπη |
zaf.media.recording.dynamics.com | Νότια Αφρική |
Βήμα 3: Αποστολή εκδηλώσεων σε πραγματικό χρόνο (Ενοποίηση προγράμματος-πελάτη προγράμματος κλήσης)
Για να μπορούν οι πληροφορίες συνομιλίας να παρέχουν μεταγραφή σε πραγματικό χρόνο και πληροφορίες, το πρόγραμμα κλήσης τρίτου μπορεί να χρησιμοποιήσει δύο εκδηλώσεις για να ειδοποιήσει πότε ξεκινά ή λήγει μια κλήση.
Συμβάν έναρξης κλήσης: Όταν οι πληροφορίες συνομιλίας λαμβάνουν το συμβάν "έναρξη κλήσης", θα εμφανίζεται το κουμπί εγγραφής και η μεταγραφή σε πραγματικό χρόνο και οι πληροφορίες.
Συμβάν λήξης κλήσης: Όταν οι πληροφορίες συνομιλίας λαμβάνουν το συμβάν "η κλήση έληξε", θα ολοκληρώσει την κλήση και θα εμφανίσει το κουμπί Πλήρης σύνοψη για να λάβετε τη σύνοψη κλήσεων και τις πληροφορίες που δημιουργούνται από 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 και των εκδηλώσεων του προγράμματος κλήσης πελάτη, μπορείτε να δοκιμάσετε την ενοποίηση δημιουργώντας μια νέα πολιτική εγγραφής με τη νέα υπηρεσία παροχής.
Συνδεθείτε ως διαχειριστής συστήματος, στην εφαρμογή Κέντρο πωλήσεων.
Από την περιοχή αλλαγών, επιλέξτε Ρυθμίσεις Sales Insights.
Μεταβείτε στις Καθολικές ρυθμίσεις>Πληροφορίες συνομιλίας. Στην ενότητα "Υπηρεσίες παροχής κλήσεων", θα δείτε την υπηρεσία παροχής τρίτου που έχετε καταχωρήσει.
Δημιουργήστε μια πολιτική εγγραφής για τη νέα υπηρεσία παροχής. Για περισσότερες πληροφορίες, δείτε Ρύθμιση Microsoft Teams για πληροφορίες συνομιλίας
Το ακόλουθο στιγμιότυπο οθόνης είναι ένα παράδειγμα μιας πολιτικής εγγραφής για το Twilio.
Τώρα, καλέστε έναν χρήστη που είναι μέρος του επιλεγμένου ρόλος ασφαλείας (στο δικό μας παράδειγμα, η πολιτική έχει ενεργοποιηθεί για όλους τους ρόλους ασφαλείας).
Όταν το Dynamics 365 λάβει το συμβάν callStarted από το πρόγραμμα κλήσης, θα έχετε την επιλογή να ξεκινήσετε την εγγραφή:
Αφού επιλέξετε Καρτέλα, θα μπορείτε να δείτε τη μεταγραφή σε πραγματικό χρόνο κατά τη διάρκεια της κλήσης και μια πλήρη σύνοψη και πληροφορίες κλήσεων στο τέλος της κλήσης.