ส่งต่อให้ ServiceNow

Note

บทความนี้อธิบายคุณสมบัติที่ใช้ในเอเจนต์หรือการไหลของเอเจนต์ที่ขับเคลื่อนโดยฮาร์เนสมาตรฐาน

บทความนี้ให้คําแนะนําทีละขั้นตอนเกี่ยวกับวิธีการสร้างและเชื่อมต่อผู้ช่วยเสมือนของ ServiceNow กับตัวแทน Copilot Studio และเลื่อนระดับไปยัง ServiceNow Live Agent ใช้การรวมนี้เพื่อใช้ประโยชน์จากความสามารถของทั้งสองแพลตฟอร์มและใช้คําตอบที่สร้างสรรค์เพื่อปรับปรุงประสบการณ์ตัวแทนของคุณ

Note

สำหรับข้อมูลโดยละเอียดเพิ่มเติม โปรดดู กำหนดค่าการส่งต่อไปยังศูนย์การมีส่วนร่วมทั่วไป Copilot Studio มีเครื่องมือสำหรับคุณในการรวมโซลูชันเอเจนต์ที่เป็นมนุษย์ เช่น ServiceNow

ขั้นตอนต่อไปนี้เป็นเพียงคำแนะนำและคุณต้องมีทีมพัฒนาซอฟต์แวร์เพื่อดำเนินการ ขั้นตอนนี้มีไว้สําหรับผู้เชี่ยวชาญด้าน IT นักพัฒนา หรือผู้ติดตั้งระบบที่มีประสบการณ์ ซึ่งมีความเข้าใจอย่างถ่องถ้วนเกี่ยวกับเครื่องมือนักพัฒนา โปรแกรมอรรถประโยชน์ และสภาพแวดล้อมการพัฒนาแบบรวม (IDEs)

Overview

การรวมระหว่าง Copilot Studio และ ServiceNow ต้องการขั้นตอนการกําหนดค่าระดับสูงต่อไปนี้:

  1. สร้าง Azure Function เป็นแบบรีเลย์ไปยัง DirectLine

  2. กําหนดค่า Bot Interconnect ใน ServiceNow

  3. จับคู่หัวข้อระหว่าง ServiceNow Virtual Agent และ Copilot Studio

  4. ขยายการใช้งาน DirectLinePrimaryBotIntegrationInboundTransformer

  5. กําหนดค่าการแฮนด์ออฟใน Copilot Studio

Prerequisites

ก่อนที่คุณจะเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมีข้อกําหนดเบื้องต้นดังต่อไปนี้:

  • บัญชี ServiceNow ที่ใช้งานโดยมีตัวแทนเสมือนของ ServiceNow และ ServiceNow Bot Interconnect เปิดใช้งานอยู่ (จําเป็นต้องมี ServiceNow Yokohama หรือใหม่กว่า)
  • บริษัทตัวแทน Copilot Studio ที่กําหนดค่าด้วย no authentication (รูปแบบนี้ใช้การรับรองความถูกต้องจากเซิร์ฟเวอร์กับเซิร์ฟเวอร์ด้วยข้อมูลลับของ Direct Line)
  • ผู้ดูแลระบบเข้าถึง ServiceNow

สร้าง Azure Function เป็นแบบรีเลย์ไปยัง DirectLine

ฟังก์ชัน Azure ทําหน้าที่เป็นรีเลย์ทําให้ ServiceNow Bot Interconnect เรียกใช้กิจกรรม (เช่น ข้อความและเหตุการณ์) จากการสนทนาอย่างต่อเนื่องกับตัวแทน Copilot Studio

สําคัญ

เวลารอเริ่มต้นสําหรับ Azure Function คือ 2,000 ms (2 วินาที) ซึ่งอาจสั้นเกินไปเมื่อใช้ orchestration ที่สร้างใน Copilot Studio ถ้าข้อความไม่เข้ามาในตัวแทนเสมือนใน ServiceNow ให้พิจารณาเพิ่มเวลารอ

คําขอตัวอย่างที่ส่งโดย ServiceNow Bot Interconnect

GET /api/relayToDirectLine HTTP/1.1
Host: your-function-app.azurewebsites.net
Authorization: Bearer YOUR_DIRECT_LINE_SECRET_HERE
ConversationId: abc123def456-conversation-id
Watermark: 5
WaitTime: 3000

การตอบสนองตัวอย่างจาก Azure Function

{
    "activities": [
        {
            "type": "message",
            "id": "0000001",
            "timestamp": "2025-07-13T13:46:43.6095506Z",
            "text": "Hello, I'm a Copilot Studio Agent.",
            "from": {
                "id": "bot-id",
                "name": "Copilot Studio Agent",
                "role": "bot"
            },
            "conversation": {
                "id": "wwjmISGzmd3FzMEAgotiJ-us"
            }
        },
        {
            "type": "message",
            "id": "0000002",
            "timestamp": "2025-07-13T13:46:45.0000000Z",
            "text": "speak to a live agent",
            "from": {
                "id": "user-id",
                "name": "User",
                "role": "user"
            },
            "conversation": {
                "id": "wwjmISGzmd3FzMEAgotiJ-us"
            }
        },
        {
            "type": "event",
            "id": "0000006",
            "timestamp": "2025-07-13T13:46:51.2854808Z",
            "name": "handoff.initiate",
            "value": {
                "va_LastPhrase": "speak to a live agent",
                "va_Topics": ["Escalate"]
            }
        }
    ],
    "watermark": "10"
}

การสร้างและการปรับใช้ฟังก์ชัน

คุณสามารถสร้างและปรับใช้ v3 Azure Function ที่อธิบายไว้ในเอกสารประกอบ ServiceNow หรือ V4 Azure Function ที่พร้อมใช้งานในที่เก็บ Copilot Studio GitHub

ตัวเลือกที่ 1: ปรับใช้ v3 Azure Function

หากต้องการสร้างและปรับใช้ v3 Azure Function ให้ทําตามขั้นตอนที่ระบุไว้ในเอกสาร ServiceNow:

  1. สร้างฟังก์ชัน JavaScript ใน Microsoft Azure โดยใช้ Visual Studio Code

  2. ปรับใช้ฟังก์ชันกับ Azure และเรียกใช้ URL ฟังก์ชันสําหรับใช้ใน ServiceNow Bot Interconnect

ตัวเลือกที่ 2: ปรับใช้ v4 Azure Function

อีกวิธีหนึ่งคือ คุณสามารถใช้ Azure Function v4 ที่มีอยู่ในที่เก็บ Copilot Studio GitHub ได้:

  1. ลอกแบบที่เก็บจากตัวอย่าง Copilot Studio ฟังก์ชัน จะอยู่ภายใต้CopilotStudioSamples/contact-center/servicenow/DirectLineAzureFunction

  2. ทําตามคําแนะนําใน สร้างฟังก์ชัน JavaScript ใน Azure โดยใช้ Visual Studio Code

  3. บนหน้า ภาพรวมของ แอปฟังก์ชัน ให้คัดลอก URL ของฟังก์ชัน

กําหนดค่า Bot Interconnect ใน ServiceNow

  1. รับข้อมูลลับ Direct Line ของเจ้าหน้าที่ของคุณ

  2. เพิ่มคีย์ลับ Direct Line ไปยังอินสแตนซ์ Bot Interconnect ที่เป็นตัวแทนเสมือนของคุณ

หัวข้อแผนที่ระหว่าง ServiceNow Virtual Agent และ Copilot Studio

  1. หากต้องการเรียกใช้หัวข้อ Copilot Studio ให้สร้างหัวข้อ Virtual Agent Bot Interconnect Shell

ขยาย DirectLinePrimaryBotIntegrationInboundTransformer

คุณสมบัติในตัวDirectLinePrimaryBotIntegrationInboundTransformerไม่สามารถแยกวิเคราะห์เหตุการณ์ของ Copilot Studio handoff.initiate เมื่อการสนทนาจำเป็นต้องส่งให้กับเอเจนต์สด

ฟังก์ชัน shouldConnectToAgent ใน DirectLinePrimaryBotIntegrationInboundTransformer ส่งกลับ false เสมอ:

shouldConnectToAgent: function(response) {
    return false;
}

หากต้องการจัดการเหตุการณ์การแฮนด์ออฟอย่างถูกต้อง ให้สร้างตัวแปลงแบบกําหนดเองที่ขยายตัวแปลงเริ่มต้นและตรวจหา handoff.initiate เหตุการณ์

shouldConnectToAgent: function() {
        var response = this._response || {};
        var activities = response.activities || [];

        var handoffDetected = activities.some(function(activity) {
            return activity.type === "event" && activity.name === "handoff.initiate";
        });

        if (handoffDetected) {
            return true;
        }
        return false;
    }

สร้างตัวแปลงแบบกําหนดเอง

  1. ใน ServiceNow สลับไปยังขอบเขตแอปพลิเคชันการเชื่อมต่อระหว่างบอท

    1. เลือกไอคอนลูกโลกที่มุมบนขวา

    2. เลือก Bot Interconnect จากรายการแอปพลิเคชัน

  2. สร้างสคริปต์อินคลูดใหม่

    1. ไปที่System Definition>Script Includes

    2. เลือก ใหม่

    3. กำหนดการตั้งค่าต่อไปนี้:

    • ชื่อ: CustomDirectLineInboundTransformer
    • ชื่อ API: sn_va_bot_ic.CustomDirectLineInboundTransformer (สร้างโดยอัตโนมัติ)
    • ใบสมัคร: Bot Interconnect (เลือกอัตโนมัติ)
    • สามารถเข้าถึงได้จาก: ขอบเขตของแอปพลิเคชันนี้เท่านั้น
    • ใช้งานอยู่: ✓ (ถูกเลือก)
  3. แทนที่เนื้อหาสคริปต์เริ่มต้นด้วยรหัสตัวแปลงแบบกําหนดเองจากที่เก็บตัวอย่าง Copilot Studio

  4. เลือกส่งเพื่อบันทึกสคริปต์รวม

อัปเดตการกําหนดค่าการเชื่อมต่อระหว่างบอท

  1. ไปที่ Workflow Studio

    1. ใน ServiceNow ไปที่ Workflow Studio

    2. ภายใต้การดําเนินการค้นหา Direct Line Primary Bot Integration Inbound Transformer

  2. เปลี่ยนการดําเนินการของตัวแปลง

    1. เปิดการดําเนินการ Direct Line Primary Bot Integration Inbound Transformer

    2. ในตัวแก้ไขสคริปต์ ให้แสดงข้อคิดเห็นเกี่ยวกับตัวแปลงเริ่มต้นและแทนที่ด้วยการเรียกไปยังตัวแปลงแบบกําหนดเองของคุณ

    (function execute(inputs, outputs) {
       var clientVariables = JSON.parse(inputs['client_variables']);
       var response = JSON.parse(inputs['response']);
       //set client variables
       response.clientVariables = clientVariables;
    
       //var transformedResponse = new sn_va_bot_ic.DirectLinePrimaryBotIntegrationInboundTransformer(response).transformResponse();
       var transformedResponse = new sn_va_bot_ic.CustomDirectLineInboundTransformer(response).transformResponse();
    
       outputs['transformed_response'] = transformedResponse;
     })(inputs, outputs);
    
  3. บันทึกการเปลี่ยนแปลงไปยังการดําเนินการและเผยแพร่

กําหนดค่าการแฮนด์ออฟ

หากต้องการเปิดใช้งานการแฮนด์ออฟให้กับ ServiceNow Live Agent ให้เพิ่มโหนด การสนทนาการถ่ายโอน ไปยังหัวข้อ การเลื่อนระดับ ของเจ้าหน้าที่ของคุณ

  1. ใน Copilot Studio ให้เปิดเจ้าหน้าที่ของคุณและไปที่ หัวข้อ>ระบบ>เลื่อนระดับ.

  2. เลือก + (เพิ่มโหนด) >การจัดการหัวข้อ>การโอนการสนทนา.

  3. บันทึกหัวข้อของคุณและเผยแพร่ตัวแทนของคุณ

โหนดโอนการสนทนาจะส่งเหตุการณ์ handoff.initiate ที่ตัวแปลงแบบกำหนดเองของ ServiceNow ตรวจพบและดำเนินการ

ตัวอย่างหัวข้อการเลื่อนระดับ YAML

คุณยังสามารถนําเข้าการกําหนดค่า YAML ต่อไปนี้สําหรับหัวข้อ Escalate ที่สมบูรณ์ด้วยความสามารถในการถ่ายโอน:

kind: AdaptiveDialog
startBehavior: CancelOtherTopics
beginDialog:
  kind: OnEscalate
  id: main
  intent:
    displayName: Escalate
    includeInOnSelectIntent: false
    triggerQueries:
      - Talk to agent
      - Talk to a person
      - Talk to someone
      - Call back
      - Call customer service
      - Call me please
      - Call support
      - Call technical support
      - Can an agent call me
      - Can I call
      - Can I get in touch with someone else
      - Can I get real agent support
      - Can I get transferred to a person to call
      - Can I have a call in number Or can I be called
      - Can I have a representative call me
      - Can I schedule a call
      - Can I speak to a representative
      - Can I talk to a human
      - Can I talk to a human assistant
      - Can someone call me
      - Chat with a human
      - Chat with a representative
      - Chat with agent
      - Chat with someone please
      - Connect me to a live agent
      - Connect me to a person
      - Could some one contact me by phone
      - Customer agent
      - Customer representative
      - Customer service
      - I need a manager to contact me
      - I need customer service
      - I need help from a person
      - I need to speak with a live agent
      - I need to talk to a specialist please
      - I want to talk to customer service
      - I want to proceed with live support
      - I want to speak with a consultant
      - I want to speak with a live tech
      - I would like to speak with an associate
      - I would like to talk to a technician
      - Talk with tech support member

  actions:
    - kind: TransferConversationV2
      id: transferConversationV2_3JXrI7
      transferType:
        kind: TransferToAgent
        messageToAgent:
        context:
          kind: AutomaticTransferContext

Troubleshooting

ถ้าคุณพบข้อผิดพลาดในวิดเจ็ตแชทตัวแทนเสมือนของ ServiceNow ให้ทําตามขั้นตอนการแก้ไขปัญหาเหล่านี้:

ตรวจสอบรายการบันทึกของ Azure Function

  1. ตรวจสอบว่า Azure Function ของคุณทํางานอย่างถูกต้องและไม่ส่งกลับข้อผิดพลาด

  2. ดูบันทึกแบบเรียลไทม์โดยใช้บันทึกการสตรีมฟังก์ชัน Azure

  3. ตรวจสอบ Application Insights สําหรับข้อมูลเทเลเมทรีและข้อมูลข้อผิดพลาดโดยละเอียด

เปิดใช้งานการดีบัก ServiceNow

ใช้เครื่องมือการดีบักที่มีอยู่ภายในของ ServiceNow เพื่อติดตามโฟลว์การดําเนินการ:

  1. เปิดใช้งาน ตัวติดตามสคริปต์ ใน ServiceNow

  2. ทําซ้ําการดําเนินการที่ทําให้เกิดข้อผิดพลาด

  3. ตรวจทานล็อกการติดตามเพื่อระบุตําแหน่งที่เกิดปัญหาขึ้น

การเรียกใช้ Monitor Copilot Studio

ตรวจสอบให้แน่ใจว่าตัวแทน Copilot Studio ของคุณถูกเรียกใช้อย่างถูกต้อง:

  1. เชื่อมต่อตัวแทน Copilot Studio ของคุณกับ Application Insights

  2. ตรวจสอบการวัดและส่งข้อมูลทางไกลเพื่อยืนยันว่าตัวแทนได้รับคําขอจาก ServiceNow

  3. ตรวจสอบหาข้อผิดพลาดหรือลักษณะการทํางานที่ไม่คาดคิดในการดําเนินการของตัวแทน

ปัญหาและวิธีแก้ไขทั่วไป

  • การส่งต่อไม่ได้ทริกเกอร์: ตรวจสอบว่าตัวแปลงแบบกำหนดเองกำลังทำงานอยู่ และโหนดโอนการสนทนาถูกกำหนดค่าอย่างถูกต้อง
  • ข้อผิดพลาดการรับรองความถูกต้อง: ตรวจสอบให้แน่ใจว่ามีการกําหนดค่าข้อมูลลับของสายโดยตรงอย่างถูกต้องใน ServiceNow โดยเฉพาะลิงก์เรกคอร์ดข้อมูลประจําตัวใน ServiceNow ด้วยเรกคอร์ดการเชื่อมต่อ
  • ฟังก์ชันหมดเวลา: ตรวจสอบว่า Azure Function หมดเวลาหรือไม่ และเพิ่มการตั้งค่าการหมดเวลาถ้าจําเป็น