Sdílet prostřednictvím


Integrace číselníků třetích stran s analytickými nástroji pro konverzace Dynamics 365 (preview)

[Tento článek představuje předběžnou dokumentaci a může se změnit.]

Díky této integraci mohou uživatelé Dynamics 365 používat číselníky poskytované telefonními společnostmi třetích stran, jako je Twilio Flex, k uskutečňování a přijímání telefonních hovorů v Dynamics 365 a získávat přehledy generované AI v reálném čase a bohatou analýzu svých hovorů po jejich skončení. Další informace o analytických nástrojích pro konverzace Dynamics 365

Důležité

  • Toto je funkce Preview.
  • Funkce Preview nejsou určené pro normální používání a mohou mít omezené fungování. Tyto funkce podléhají doplňujícím podmínkám použití a jsou poskytnuty před oficiálním vydáním, aby si je zákazníci mohli co nejdříve vyzkoušet a napsat nám své názory.

Jak integrace funguje

Na vysoké úrovni se integrace skládá ze tří částí:

  1. Registrace zprostředkovatele: Zaregistrujte podrobnosti o zprostředkovateli a získejte seznam uživatelů, který je zaznamenán pomocí rozhraní API analytických nástrojů pro konverzace.

  2. Rozvětvení médií: Rozvětvete audio tok do záznamníků analytických nástrojů pro konverzace pomocí protokolu SIPREC.

  3. Odeslání událostí v reálném čase: Aby bylo možné povolit prostředí přepisu a přehledů hovorů v reálném čase, odešlete události uživatelského rozhraní z klientského uživatelského rozhraní zprostředkovatele do analytických nástrojů pro konverzace Dynamics 365.

Příklad integrace mezi analytickými nástroji pro konverzace Dynamics 365 a zprostředkovatelem telefonních služeb třetí strany Twilio Flex viz Integrace Twilio Flex s analytickými nástroji pro konverzace Dynamics 365.

Následující schéma znázorňuje, jak integrace funguje:

Schéma znázorňující tok integrace

Krok 1: Registrace zprostředkovatele

  1. Vytvoření aplikace ID Microsoft Entra.

  2. Přidání oprávnění rozhraní API pro záznam médií:

    1. V aplikaci Microsoft Entra ID, kterou jste vytvořili, přejděte na Oprávnění rozhraní API.

    2. Vyberte Přidat oprávnění.

    3. V sekci Rozhraní API, která používá má organizace vyhledejte položku Záznam médií pro Dynamics 365 Sales a vyberte ji: Screenshot možnosti záznamu médií.

    4. Přidejte oprávnění Users.Read.All a vyberte Přidat oprávnění.

    Poznámka:

    Ujistěte se, že máte souhlas správce pro oprávnění volat rozhraní API analytických nástrojů pro konverzace v kontextu aplikace. Další informace o oprávněních a souhlasu.

  3. Získejte token pro spuštění rozhraní API analytických nástrojů pro konverzace pomocí aplikace vytvořené v předchozí části:

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

    Parametr scope určuje ID aplikace Analytické nástroje pro konverzace. Tuto hodnotu neměňte.

    Další informace o příkazu curl viz Získání tokenů ID Microsoft Entra pro instanční objekty.

  4. Chcete-li zaregistrovat zprostředkovatele služeb třetí strany, zavolejte následující rozhraní API analytických nástrojů pro konverzace:
    POST /api/v1.0/providers/tenants

    Do textu žádosti zadejte následující parametry:

    • orgID: Zadejte ID organizace Dynamics 365.

    • Type: Pro číselníky třetích stran zadejte „custom“.

    • hosting: Zadejte typ hostingu poskytovatele telefonie. Například „cloud“ nebo „on-premises“.

    • AccountId: Zadejte ID účtu zprostředkovatele telefonie.

    • CerfificateSubjectName a CertificateIssuer: Zadejte podrobnosti certifikátu zprostředkovatele telefonie.

    • SourceIPNetwork: Zadejte IP adresu klienta SIPREC. Pokud nechcete omezit IP adresu, zadejte „0.0.0.0“.
      Následuje fragment kódu je příklad textu žádosti:

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

    Další informace o rozhraní API získáte v dokumentaci swagger.

  5. Chcete-li získat seznam uživatelů, který se má zaznamenat, zavolejte následující rozhraní API analytických nástrojů pro konverzace:
    GET /api/v1.0/providers/users

Poté, co správce Dynamics 365 Sales vytvoří zásady nahrávání, může zprostředkovatel použít tento koncový bod k filtrování médií, která budou rozdělena do záznamníků analytických nástrojů pro konverzace.

Krok 2: Rozvětvení médií (integrace SIPREC)

Záznamníky analytických nástrojů pro konverzace implementují standardní protokol SIPREC.

Komunikace je zabezpečena protokoly SIPS (port 5061) a SRTP. Ověřování se provádí pomocí mTLS v připojení zpráv SIPS a je založeno na certifikátu poskytnutém rozhraním API – což znamená, že zprostředkovatel musí být registrován, aby klient mohl navázat připojení SIPS.

Následující screenshot ilustruje komunikaci mezi klientem SIPREC a serverem SIPREC:

Screenshot příkladu komunikace mezi klientem SIPREC a serverem SIPREC.

Pro analytické nástroje pro konverzace jsou vyžadována následující metadata:

Záhlaví:

Název záhlaví Popis Příklad hodnoty
Call-ID Jedinečný identifikátor hovoru. Toto ID slouží ke korelaci signálů SIP a uživatelských akcí, jako je zahájení/zastavení záznamu. efxxxxxxxxxxxxx
X-AccountId Jedinečný identifikátor účtu, kterému náleží hovor. Toto ID slouží k ověřování a autorizaci. Stejné ID účtu je registrované v rozhraní API pro klienta. ACxxxxxxxxxxxxxxxxxxxxxxx

Metadata

Název klíče metadat Popis Příklad hodnoty
Role Označuje, zda se jedná o příchozí nebo odchozí hovor pro prodejce. [„inbound“, „outbound“]
CallerDisplayName Zobrazovaný název volajícího. Není-li k dispozici, zobrazí se telefonní číslo. Kenny Smith
CalleeDisplayName Zobrazované jméno příjemce. Není-li k dispozici, zobrazí se telefonní číslo. Alex Baker

Zde jsou příklady pozvánek a zpráv na rozloučenou s potřebnýmii záhlavími a metadaty:

Uvítací zpráva (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--

Rozlučková zpráva (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 

Podporované koncové body a oblasti záznamníku

V následující tabulce jsou uvedeny podporované koncové body záznamníku a jejich oblasti. Záznamníky, které chcete používat, můžete nakonfigurovat v nastavení zprostředkovatele telefonie. Chcete-li vědět, jak se to dělá pro Twilio Flex, viz Krok 2: Instalace konektoru SIPREC a směrování hovorů do Dynamics 365.

Koncový bod Oblast
media.recording.dynamics.com Globální (nejbližší oblast)
southeastasia.media.recording.dynamics.com Jihovýchodní Asie
australiaeast.media.recording.dynamics.com Austrálie
sam.media.recording.dynamics.com Jižní Amerika
canadacentral.media.recording.dynamics.com Kanada
switzerlandnorth.media.recording.dynamics.com Švýcarsko
eastus.media.recording.dynamics.com (USA)
francecentral.media.recording.dynamics.com Francie
centralindia.media.recording.dynamics.com Indie
japaneast.media.recording.dynamics.com Japonsko
uae.media.recording.dynamics.com UAE
uksouth.media.recording.dynamics.com Velká Británie
westeurope.media.recording.dynamics.com Západní Evropa
zaf.media.recording.dynamics.com Jihoafrická republika

Krok 3: Odesílání událostí v reálném čase (integrace klienta číselníku)

Aby analytické nástroje pro konverzace poskytovaly přepis a přehledy v reálném čase, může číselník třetí strany používat dvě události k upozornění na začátek nebo konec hovoru.

  • Událost zahájení hovoru: Když analytické nástroje pro konverzace přjmou událost „hovor zahájen“, zobrazí tlačítko pro záznam spolu s přepisem a přehledy v reálném čase.

  • Událost ukončení hovoru: Když analytické nástroje pro konverzace přijmou událost „hovor ukončen“, vytvoří souhrn hovoru a zobrazí tlačítko Úplné shrnutí, čímž získáte souhrn a přehledy hovoru vygenerované AI.

K odeslání událostí použijte rozhraní API raiseEvent v Dynamics 365 Channel Integration Framework (CIF).

Zde je ukázkový fragment kódu pro odeslání událostí:

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

Testování integrace

Po registraci nového zprostředkovatele s klientem a nastavení rozvětvení SIPREC a událostí číselníku klienta můžete otestovat integraci vytvořením nové zásady nahrávání s novým zprostředkovatelem.

  1. V aplikaci Centrum prodeje se přihlaste jako správce systému.

  2. V sekci Změna oblasti vyberte Nastavení Sales Insights.

  3. Jděte na Globální nastavení>Analytické nástroje pro konverzace. V části Zprostředkovatelé hovorů uvidíte zprostředkovatele třetí strany, kterého jste zaregistrovali.

  4. Vytvořte zásady nahrávání pro nového zprostředkovatele. Další informace viz Nastavení Microsoft Teams pro analytické nástroje pro konverzace.

Následující screenshot je příklad zásad nahrávání pro Twilio.

Screenshot zásad nahrávání pro Twilio

Nyní zavolejte uživatele, který je součástí vybrané role zabezpečení (v našem příkladu je zásada povolena pro všechny role zabezpečení).

Když Dynamics 365 z číselníku obdrží událost callStarted, budete mít možnost zahájit nahrávání:

Screenshot s oznámením pro nahrávání hovorů

Po výběru možnosti Záznam budete moci vidět přepis v reálném čase během hovoru a úplné shrnutí a přehledy hovorů na konci hovoru.

Zobrazení a popis stránky se souhrnem hovoru