Bagikan melalui


Mengintegrasikan dialer pihak ketiga dengan Dynamics 365 Kecerdasan Percakapan (pratinjau)

[Artikel ini adalah dokumentasi prarilis dan dapat berubah.]

Dengan integrasi ini, pengguna Dynamics 365 dapat menggunakan dialer yang disediakan oleh perusahaan telepon pihak ketiga seperti Twilio Flex, untuk melakukan dan menerima panggilan telepon di Dynamics 365, dan mendapatkan wawasan yang dihasilkan AI secara real-time dan analisis pasca-panggilan yang kaya dari panggilan mereka. Pelajari lebih lanjut tentang Dynamics 365 Kecerdasan Percakapan

Penting

  • Ini adalah fitur pratinjau.
  • Fitur pratinjau tidak dimaksudkan untuk digunakan dalam produksi dan fungsinya mungkin terbatas. Fitur-fitur ini tunduk pada ketentuan penggunaan tambahan, dan tersedia sebelum rilis resmi sehingga pelanggan bisa mendapatkan akses awal dan memberikan umpan balik.

Cara kerja integrasi

Pada tingkat tinggi, integrasi terdiri dari tiga bagian:

  1. Daftarkan penyedia: Daftarkan detail penyedia dan dapatkan daftar pengguna yang akan direkam dengan menggunakan API Kecerdasan Percakapan.

  2. Fork media: Fork aliran audio ke perekam Kecerdasan Percakapan menggunakan protokol SIPREC.

  3. Kirim peristiwa real-time: Untuk mengaktifkan transkripsi real-time dan pengalaman Wawasan Panggilan, kirim peristiwa UI dari UI klien penyedia ke Dynamics 365 Kecerdasan Percakapan.

Untuk contoh integrasi antara Dynamics 365 Kecerdasan Percakapan dan penyedia telepon pihak ketiga, Twilio Flex, lihat Mengintegrasikan Twilio Flex dengan Dynamics 365 Kecerdasan Percakapan.

Diagram berikut mengilustrasikan cara kerja integrasi:

Diagram yang menggambarkan alur integrasi

Langkah 1: Daftarkan penyedia

  1. Buat Microsoft Entra aplikasi ID.

  2. Tambahkan izin API untuk perekaman media:

    1. Di Microsoft Entra aplikasi ID yang Anda buat, buka izin API.

    2. Pilih Tambahkan izin.

    3. Di bawah API yang digunakan organisasi saya, cari Perekaman Media untuk Dynamics 365 Sales dan pilih: Tangkapan layar opsi perekaman media

    4. Tambahkan izin Users.Read.All dan pilih Tambahkan izin

    Catatan

    Pastikan untuk mendapatkan persetujuan admin untuk izin agar dapat memanggil API Kecerdasan Percakapan dalam konteks aplikasi. Pelajari izin dan izin lebih lanjut.

  3. Dapatkan token untuk menjalankan API Kecerdasan Percakapan menggunakan aplikasi yang dibuat di bagian sebelumnya:

    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>'

    Parameter menentukan scope ID aplikasi aplikasi Kecerdasan Percakapan. Jangan ubah nilai ini.

    Untuk informasi selengkapnya tentang perintah curl, lihat Mendapatkan Microsoft Entra token ID untuk perwakilan layanan.

  4. Panggil API Kecerdasan Percakapan berikut untuk mendaftarkan penyedia layanan pihak ketiga:
    POST /api/v1.0/providers/tenants

    Tentukan parameter berikut dalam isi permintaan:

    • orgID: Tentukan ID organisasi Dynamics 365.

    • Jenis: Tentukan "kustom" untuk dialer pihak ketiga.

    • hosting: Tentukan jenis hosting penyedia telepon. Misalnya, "cloud" atau "lokal".

    • AccountId: Tentukan ID akun penyedia telepon.

    • CerfificateSubjectName dan CertificateIssuer: Tentukan detail sertifikat penyedia telepon.

    • SourceIPNetwork: Tentukan alamat IP klien SIPREC. Tentukan "0.0.0.0" jika Anda tidak ingin membatasi alamat IP.
      Cuplikan berikut adalah contoh isi permintaan:

      
      {
         "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"
         }
      }
      

    Untuk informasi selengkapnya tentang API, lihat dokumentasi Swagger.

  5. Panggil API Kecerdasan Percakapan berikut untuk mendapatkan daftar pengguna yang akan direkam:
    GET /api/v1.0/providers/users

Setelah admin Dynamics 365 Sales membuat kebijakan perekaman, penyedia dapat menggunakan titik akhir ini untuk memfilter media yang akan dicabang ke perekam Kecerdasan Percakapan.

Langkah 2: Fork media (integrasi SIPREC)

Perekam Kecerdasan Percakapan menerapkan standar Protokol SIPREC.

Komunikasi diamankan menggunakan protokol SIPS (port 5061) dan SRTP. Autentikasi dilakukan menggunakan mTLS dalam koneksi pesan SIPS, dan didasarkan pada sertifikat yang diberikan ke API – yang berarti bahwa penyedia harus terdaftar untuk penyewa untuk membuat koneksi SIPS.

Cuplikan layar berikut mengilustrasikan komunikasi antara klien SIPREC dan server SIPREC:

Cuplikan layar dari contoh komunikasi antara klien SIPREC dan server SIPREC.

Metadata berikut diperlukan untuk Kecerdasan Percakapan:

Header:

Nama Header KETERANGAN Contoh Nilai
ID Panggilan Pengidentifikasi unik panggilan. ID ini digunakan untuk menghubungkan sinyal SIP dan tindakan pengguna seperti memulai/menghentikan perekaman. efxxxxxxxxxxxxxxxxx
X-AccountId Pengidentifikasi unik dari akun tempat panggilan berada. ID ini digunakan untuk otentikasi dan otorisasi. Ini adalah ID akun yang sama yang terdaftar di API untuk penyewa. ACxxxxxxxxxxxxxxxxxxxxxxxx

Metadata

Nama kunci metadata KETERANGAN Contoh Nilai
Peran Menunjukkan apakah itu panggilan masuk atau keluar untuk penjual. ["masuk", "keluar"]
Nama Tampilan Penelepon Nama tampilan penelepon. Jika tidak tersedia, nomor telepon akan ditampilkan. Kenny Smith
Nama Tampilan Panggilan Nama tampilan penerima. Jika tidak tersedia, nomor telepon akan ditampilkan. Alex Baker

Berikut adalah contoh pesan undangan dan selamat tinggal dengan header dan metadata yang diperlukan:

Pesan UNDANG:

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

Pesan selamat tinggal:

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 

Titik akhir dan wilayah perekam yang didukung

Tabel berikut mencantumkan titik akhir perekam yang didukung dan wilayahnya. Anda dapat mengonfigurasi perekam yang ingin Anda gunakan di pengaturan penyedia telepon Anda. Untuk mempelajari tentang bagaimana hal ini dilakukan untuk Twilio Flex, lihat Langkah 2: Instal konektor SIPREC dan rutekan panggilan ke Dynamics 365.

Titik akhir Wilayah
media.recording.dynamics.com Global (wilayah terdekat)
southeastasia.media.recording.dynamics.com Asia Tenggara
australiaeast.media.recording.dynamics.com Australia
sam.media.recording.dynamics.com Amerika Selatan
canadacentral.media.recording.dynamics.com Kanada
switzerlandnorth.media.recording.dynamics.com Swiss
eastus.media.recording.dynamics.com US
francecentral.media.recording.dynamics.com Prancis
centralindia.media.recording.dynamics.com India
japaneast.media.recording.dynamics.com Jepang
uae.media.recording.dynamics.com UEA
uksouth.media.recording.dynamics.com Inggris
westeurope.media.recording.dynamics.com Eropa Barat
zaf.media.recording.dynamics.com Afrika Selatan

Langkah 3: Kirim peristiwa real-time (Integrasi klien Dialer)

Untuk memungkinkan Kecerdasan Percakapan memberikan transkripsi dan wawasan real time, dialer pihak ketiga dapat menggunakan dua peristiwa untuk memberi tahu saat panggilan dimulai atau berakhir.

  • Acara panggilan dimulai:Ketika Kecerdasan Percakapan mendapatkan peristiwa "panggilan dimulai", itu akan menampilkan tombol perekaman dan transkripsi dan wawasan real time.

  • Acara panggilan berakhir: Ketika Kecerdasan Percakapan mendapatkan peristiwa "panggilan berakhir", itu akan Wrap panggilan dan menampilkan tombol Ringkasan lengkap untuk mendapatkan ringkasan panggilan dan wawasan yang dihasilkan AI.

Untuk mengirim aktivitas, gunakan raiseEvent API di Kerangka Kerja Integrasi Saluran Dynamics 365 (CIF).

Berikut adalah contoh cuplikan kode untuk mengirim peristiwa:

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); 
});

Menguji integrasi

Setelah mendaftarkan penyedia baru dengan penyewa dan menyiapkan forking SIPREC dan peristiwa dialer klien, Anda dapat menguji integrasi dengan membuat kebijakan perekaman baru dengan penyedia baru.

  1. Masuk sebagai administrator Sistem di aplikasi Pusat Penjualan.

  2. Dari Ubah area, pilih Pengaturan wawasan penjualan.

  3. Buka Pengaturan GlobalKecerdasan> Percakapan. Di bagian Penyedia panggilan, Anda akan melihat penyedia pihak ketiga yang telah Anda daftarkan.

  4. Buat kebijakan perekaman untuk penyedia baru. Untuk informasi selengkapnya, lihat Menyiapkan Microsoft Teams Kecerdasan Percakapan

Cuplikan layar berikut adalah contoh kebijakan perekaman untuk Twilio.

Screenshot kebijakan perekaman untuk Twilio

Sekarang, panggil pengguna yang merupakan bagian dari peran keamanan yang dipilih (dalam contoh kami, kebijakan diaktifkan untuk semua peran keamanan).

Saat Dynamics 365 menerima aktivitas callStarted dari dialer, Anda akan memiliki opsi untuk memulai perekaman:

Tangkapan layar pemberitahuan untuk merekam panggilan

Setelah memilih Rekam, Anda akan dapat melihat transkripsi real-time selama panggilan dan ringkasan lengkap serta Wawasan Panggilan di akhir panggilan.

Melihat dan memahami halaman ringkasan panggilan