שתף באמצעות


שלב חייגנים של צד שלישי עם בינת שיחות של Dynamics 365 ‏(Preview)

‏‫[מאמר זה הוא תיעוד קדם-הפצה והוא עשוי להשתנות.]‬

באמצעות שילוב זה, משתמשי Dynamics 365 יכולים להשתמש בחייגנים המסופקים על ידי חברות טלפוניה של צד שלישי כגון Twilio Flex, כדי לבצע ולקבל שיחות טלפון ב- Dynamics 365, ולקבל תובנות של AI בזמן אמת וניתוח עשיר לאחר השיחה של השיחות שלהם. קבל מידע נוסף על 'בינת שיחות' של Dynamics 365

חשוב

  • ‏‫‏‫זוהי תכונת Preview.‬‬
  • תכונות Preview אינן מיועדות לשימוש בייצור וייתכן שיש להן פונקציונליות מוגבלת. תכונות אלה כפופות לתנאי השימוש המשלימים והן זמינות לפני הפצה רשמית, כך שהלקוחות יכולים לקבל גישה מוקדמת ולספק משוב.

כיצד פועל השילוב

ברמה גבוהה, האינטגרציה מורכבת משלושה חלקים:

  1. רשום את הספק: רשום את פרטי הספק וקבל את רשימת המשתמשים להקלטה באמצעות ממשק ה- API של בינת שיחות.

  2. הסתעפות של המדיה: פצל את זרם האודיו למקליטי בינת השיחה באמצעות פרוטוקול SIPREC.

  3. שלח אירועים בזמן אמת: כדי לאפשר תמלול בזמן אמת וחוויית תובנות שיחות, שלח אירועי ממשק משתמש מתוך ממשק המשתמש של הלקוח של הספק אל בינת שיחות של 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. קבל את האסימון להפעלת ממשקי ה- 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 מציין את מזהה האפליקציה של אפליקציית בינת שיחות. אל תשנה את הערך הזה.

    למידע נוסף על פקודת cURL, ראה קבלת אסימוני Microsoft Entra ID עבור מנהלי שירות.

  4. התקשר ל- API הבא של בינת שיחות כדי לרשום את ספק השירות של הצד השלישי:
    POST /api/v1.0/providers/tenants

    ציין את הפרמטרים הבאים בגוף הבקשה:

    • orgID: ציין את מזהה הארגון של Dynamics 365.

    • סוּג: ציין "מותאם אישית" עבור חייגנים של צד שלישי.

    • אירוח: ציין את סוג האירוח של ספק הטלפוניה. לדוגמה, "ענן" או "מקומי".

    • 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.

  5. קרא לממשק ה- API הבא של בינת שיחות כדי לקבל את רשימת המשתמשים להקלטה:
    GET /api/v1.0/providers/users

לאחר שמנהל המערכת של Dynamics 365 Sales יוצר את מדיניות ההקלטה, הספק יכול להשתמש בנקודת קצה זה כדי לסנן את המדיה שיסועף למקליטי בינת שיחות.

שלב 2: סעף את המדיה (שילוב SIPREC)

מקליטי בינת שיחות מיישמים את פרוטוקול SIPREC הסטנדרטי.

התקשורת מאובטחת באמצעות פרוטוקולי SIPS (יציאה 5061) ו- SRTP. האימות נעשה באמצעות mTLS בחיבור הודעת SIPS, ומבוסס על האישור שסופק ל-API – כלומר הספק חייב להיות רשום כדי שדייר ייצור חיבור SIPS.

צילום המסך הבא ממחיש את התקשורת בין לקוח SIPREC לשרת SIPREC:

צילום המסך של דוגמה לתקשורת בין לקוח SIPREC לשרת SIPREC.

המטה-נתונים הבאים נדרשים עבור בינת שיחות:

כותרות:

שם כותרת תיאור‎ ערך לדוגמה
מזהה שיחה המזהה הייחודי של השיחה. המזהה משמש להתאמה בין אותות SIP ופעולות משתמש כגון התחלה/עצירה של הקלטה. efxxxxxxxxxxxxxx
X-AccountId המזהה הייחודי של תיק הלקוח אליו שייך השיחה. המזהה משמש לאימות והרשאה. זהו אותו מזהה תיק לקוח הרשום ב- API עבור הדייר. ACxxxxxxxxxxxxxxxxxxxxxxxx

מטה-נתונים

שם מפתח של מטה-נתונים תיאור‎ ערך לדוגמה
תפקיד מציין אם מדובר בשיחה נכנסת או יוצאת עבור המוכר. ["נכנסת", "יוצאת"]
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 ‏‫איחוד האמירויות הערביות
uksouth.media.recording.dynamics.com בריטניה
westeurope.media.recording.dynamics.com מערב אירופה
zaf.media.recording.dynamics.com דרום אפריקה

שלב 3: שלח אירועים בזמן אמת (שילוב הלקוח של חייגן)

כדי לאפשר לבינת שיחות לספק תמלול ותובנות בזמן אמת, חייגן הצד השלישי יכול להשתמש בשני אירועים כדי להודיע ​​מתי שיחה מתחילה או מסתיימת.

  • אירוע התחילה שיחה: כאשר בינת שיחות‬‬ מקבל את אירוע "התחלת שיחה", הוא יציג את לחצן ההקלטה ואת התמלול והתובנות בזמן אמת.

  • אירוע השיחה הסתיימה: כאשר בינת שיחות‬‬ מקבל את אירוע "השיחה הסתיימה", הוא יסיים את השיחה ויציג את הלחצן סיכום מלא לקבלת סיכום השיחה שנוצרה על ידי בינה מלאכותית ואת התובנות.

כדי לשלוח את האירועים, השתמש ב- API raiseEvent בתוך Dynamics 365 Channel Integration Framework ‏(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 ואירועי חייגן הלקוח, תוכל לבדוק את השילוב על ידי יצירת מדיניות הקלטה חדשה עם הספק החדש.

  1. היכנס כמנהל מערכת, באפליקציה 'מרכז המכירות'.

  2. באזור השינוי, בחר הגדרות Sales Insights.

  3. עבור אל הגדרות כלליות>בינת שיחות‬. במקטע ספקי שיחות, תראה את ספק הצד השלישי שרשמת.

  4. צור מדיניות הקלטה עבור הספק החדש. מידע נוסף ראה הגדרת Microsoft Teams עבור בינת שיחות

צילום המסך הבא הוא דוגמה של מדיניות הקלטה עבור Twilio.

צילום מסך של מדיניות הקלטה עבור Twilio

כעת, התקשר למשתמש שהוא חלק מתפקיד אבטחה שנבחר (בדוגמה שלנו, המדיניות מופעלת עבור כל תפקידי האבטחה).

כאשר Dynamics 365 מקבל את האירוע callStarted מהחייגן, תהיה לך אפשרות להתחיל את ההקלטה:

צילום מסך של ההודעה להקלטת שיחות

לאחר בחירה בהקלט, תוכל לראות את התמלול בזמן אמת במהלך השיחה וסיכום מלא ותובנות שיחה בסיום השיחה.

הצג את והבן את דף סיכום השיחות