Dela via


Integrera Twilio Flex med Dynamics 365 konversationsintelligens (förhandsversion)

[Denna artikel är en förhandsversion av dokumentationen och kan komma att ändras.]

Denna integration låter dina säljare ringa och ta emot Twilio Flex-samtal från Dynamics 365 och få transkriberingar i realtid under samtalet och AI-genererade samtalsinsikter efter samtalet.

Viktigt!

  • Detta är en förhandsversion.
  • Förhandsversionsfunktioner ska inte användas i produktion och funktionerna kan vara begränsade. Funktionerna är föremål för kompletterande användningsvillkor så att kunder kan få tidig tillgång och ge feedback.

Förutsättningar

  • Ett Twilio-konto

  • Ett Twilio Flex-konto – se denna länk för mer information om hur du upprättar ett Flex-konto

  • En Microsoft Dynamics 365 Sales-miljö med Sales Premium- eller Sales Enterprise-licens, tillsammans med privilegier för systemadministratör

  • Konversationsintelligens installerad och konfigurerad – Mer information

  • Dynamics 365 Ramverk för kanalintegration 1.0 installerad. Läs mer

  • En lokal Node JS-miljö konfigurerad

  • Programmet skapa-plugin-program

Steg 1: Konfigurera Twilio Flex som kanalleverantör

I Dynamics 365 Ramverk för kanalintegration skapar du en kanalleverantör för Twilio Flex. Se skärmbilden nedan som exempel:

Skärmbild av Twilio som lagts till som kanalleverantör.

Ange följande värden::

  • Kanal-URL:https://flex.twilio.com/agent-desktop

  • Aktivera utgående kommunikation: Ja

  • API-version: 1.0

  • Kanalorder: 1

  • Betrodd domän:https://flex.twilio.com/

  • Välj enhetligt gränssnitt appar för kanal: Försäljningsnav (eller någon annan app som du vill ska aktiveras för integreringen)

  • Välj säkerhetsroller för kanalen: Lägg till de roller som ska använda Twilio Flex. Till exempel säljare, försäljningschef och så vidare. För att bädda in Twilio Flex som en iFrame i Dynamics 365, lägg till Dynamics 365-organisationens URL till listan över tillåtna URL:er. Mer information finns i denna artikel.

Steg 2: Installera SIPREC-anslutningsprogram och dirigera samtal till Dynamics 365

  1. Installera tillägget SIPREC-anslutningsprogram.

  2. Öppna inställningarna för Twilio-administratörscentret och konfigurera det för att dela media till Dynamics 365-inspelare som illustreras i följande skärmbild:

    Skärmbild av inställningar av Twilio administrationscenter.

    Följande fält är viktiga:

    • Unikt namn: Ange ett namn och notera det. Du måste använda den i nästa steg

    • Sessionsinspelningsserver: Ange URL:en till Dynamics 365-servern för medieinspelning. En lista över de regioner som stöds finns i Inspelare och regioner som stöds.

      • Om du vill föra över media till närmaste webbplats använder du följande URL: sip:SRS@media.recording.dynamics.com:5061;secure=true

      • Fält med autentiseringsuppgifter kan förbli tomma. Autentiseringen sker med certifikat på TLS-installationen mellan Twilio och Dynamics.

Steg 3: Konfigurera samtalsflödet för att öka medias genom att använda Dynamics 365

  1. Navigera till avsnittet Studio Flows i Console och välj Voice IVR-flöde.

  2. På höger sida, under avsnitt Röst i widgetbiblioteket, lägg till widget Förgreningsström:

    Skärmbild av widgeten förgreningsström.

  3. Konfigurera nu widgeten så att flödet förgrenas med hjälp av SIPREC-anslutningsprogrammet du definierade tidigare:

    Skärmbild av konfiguration widgeten förgreningsström.

  4. Ange följande värden:

    - Strömåtgärd: Starta

    • Strömtyp: Siprec
    • Kopplingens namn: Det namn som du bekräftar till SIPREC-anslutningsprogram. I vårt exempel är det SipRec1.
    • Spår: Båda spåren
    • Flödesparametrar:
      • Roll: inkommande (i vårt exempel kommer vi att spela in inkommande samtal)

      • CallerDisplayName: {{trigger.call.From}}

      • CalleeDisplayName: {{trigger.call.To}}

  5. På flik Övergångar, konfigurera Förgreningsström att vara innan samtalet skickas till handläggaren:

    Skärmbild av fliken Twilio-övergången.

  6. Spara flödet och publicera.

Steg 4: Konfigurera ett Twilio-telefonnummer

Du måste peka på ett Twilio-telefonnummer till ditt nyskapade Studioflöde.

  1. Välj ett nummer som du äger – eller köp ett nytt nummer – i konsolen för Twilio-telefonnummer.

  2. Öppna telefonnumret genom att markera det och rulla sedan ned till avsnittet Röst på sidan.

  3. Välj det flöde som du hade definierat tidigare i fälten Samtal kommer in (se bilden nedan):

    Skärmbild av Twilio samtal kommer i fält

Steg 5: Konfigurera Dynamics 365 för integreringen

Vi konfigurerar Twilio som samtalsleverantör och konfigurerar en registreringspolicy för att definiera vem som kan registrera samtal och annan information som används för konversationsinsikter.

  1. I appen Försäljningsnav, gå till Ändra område och välj Inställningar för Sales Insights.

  2. Välj Konversationsintelligens.

    Skärmbild av inställningssidan Konversationsintelligens

  3. Välj Twilio i avsnittet Samtalsleverantörer och ange Twilio-konto SID.

  4. Spara ändringarna.

  5. Konfigurera en registreringsprincipen med hjälp av Twilio-samtalsleverantören.

    1. Välj Skapa en inspelnings policy och konfigurera policyn. Läs mer.

    2. Välj Skapa och publicera sedan inställningarna.

Steg 6: Förbereda Flex plugin-programmet för att integrera realtidsupplevelsen

Flex är ett React-projekt och anpassningar som du gör i användargränssnittet skapas som plugin-komponenter.

Att förbereda en nodmiljö och ställa in en tom Flex-plugin ligger utanför ramen för denna dokumentation. Se Twilio dokumentation för en stegvis guide om att skapa ditt första Flex-plugin-program.

Skapa ett nytt plugin-program som gör att du kan lägga till anpassningskoden för Dynamics.

Vid det här laget kommer din plugin JS-fil att se ut så här:

Skärmbild av plugin.js-fil.

Lägg till Microsoft CIF-klientens bibliotek i plugin-programmet. Klientbiblioteket måste läsas in asynkront när Entitet lanserar, så lägg till följande kod i Flex init-funktionen.

import React from 'react';
import \* as Flex from '@twilio/flex-ui';
import { FlexPlugin } from '@twilio/flex-plugin';
import reducers, { namespace } from './states';
const PLUGIN\_NAME = 'SamplePlugin';
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;
}

export default class SamplePlugin extends FlexPlugin {
  constructor() {
    super(PLUGIN\_NAME);
  }
  /\*\*
   \* This code is run when your plugin is being started
   \* Use this to modify any UI components or attach to the actions framework
   \*
   \* @param flex { typeof Flex }
   \* @param manager { Flex.Manager }
   \*/
  async init(flex: typeof Flex, manager: Flex.Manager): Promise<void> {
    this.registerReducers(manager);
    this.loadCIF();
    flex.Actions.addListener('afterAcceptTask', (payload) => {
      const callStartedEvent : CallStartedEvent = {
        callId: payload.task.\_task.attributes.call\_sid,
        startTime: new Date(),
        isIncomingCall: true,
        contactName: payload.task.\_task.attributes.caller,
        contactNumber: payload.task.\_task.attributes.caller
      };
      // @ts-ignore
      Microsoft.CIFramework.raiseEvent('WIDGET\_CALL\_STARTED', callStartedEvent);
    });

    flex.Actions.addListener('afterCompleteTask', (payload) => {
      // @ts-ignore
      Microsoft.CIFramework.raiseEvent('WIDGET\_CALL\_ENDED', {
        callId: payload.task.\_task.attributes.call\_sid,
        callTerminationReason: 'success',
        callEndTime: new Date(),
        isCallStarted: true
      });
      const callEndedEvent : CallEndedEvent = {
        callId: payload.task.\_task.attributes.call\_sid,
        callEndTime: new Date(),
        callTerminationReason: 'success',
        isCallStarted: true
      };
 

      // @ts-ignore
      Microsoft.CIFramework.raiseEvent('WIDGET\_CALL\_ENDED', callEndedEvent);
    });

    const options: Flex.ContentFragmentProps = { sortOrder: -1 };
    flex.AgentDesktopView.Panel1.Content.add(<div key="SamplePlugin-component" >Hello Partner!</div>, options);
  }

  loadCIF = () => {
    const script = document.createElement("script");
    script.src = \`${window.location.ancestorOrigins\[0\]}/webresources/Widget/msdyn\_ciLibrary.js\`;
    script.setAttribute('data-crmurl', window.location.ancestorOrigins\[0\]);
    script.setAttribute('data-cifid', 'CIFMainLibrary');
    document.body.appendChild(script);
  }

  /\*\*

   \* Registers the plugin reducers
   \*
   \* @param manager { Flex.Manager }
   \*/
  private registerReducers(manager: Flex.Manager) {
    if (!manager.store.addReducer) {
      // eslint-disable-next-line
      console.error(\`You need FlexUI > 1.9.0 to use built-in redux; you are currently on ${Flex.VERSION}\`);
      return;
    }
    manager.store.addReducer(namespace, reducers);
  }
}

Publicera plugin-programmet.
Vi har nu ett plugin-program för Flex redo att testas!

Steg 7: Testa Dynamics 365 konversationsintelligens och Flex-integrering

Logga in i appen Försäljningsnav, välj ikonen Samtal. Twilio Flex inbäddad i den högra rutan.

Skärmbild av den inbäddade Twilio-uppringningsprogram i appen Försäljningsnav.

Make sure you've set your status as Available i Twilio och ring ett samtal till det Twilio-telefonnummer som du angett i Steg 4: KOnfigurera ett Twilio-telefonnummer.

Skärmbild på meddelande om samtal i det inbäddade uppringningsprogrammet

När du har besvarat samtalet och börjar spela in går du till fliken Transkription för att visa transkription i realtid och visar sedan samtalsinsikter på sidan Samtalssammanfattning efter att samtalet har avslutats.

Visa och förstå sidan samtalssammanfattning