รับข้อความ

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

เมื่อลูกค้าส่งข้อความถึงตัวแทนที่คุณจัดการ Business Messages จะส่งเพย์โหลด JSON ไปยังเว็บฮุคของคุณที่มีรหัสต่างๆ เนื้อหาข้อความ และข้อมูลตําแหน่ง

ใช้หน้าบันทึกในคอนโซลนักพัฒนาซอฟต์แวร์การสื่อสารทางธุรกิจเพื่อแก้ไขข้อบกพร่องเกี่ยวกับการส่งข้อความ

จัดการข้อความขาเข้า

วิธีที่ตัวแทนจัดการและตอบข้อความจากผู้ใช้จะขึ้นอยู่กับตรรกะธุรกิจของคุณ อย่างไรก็ตาม โดยทั่วไปแล้ว ขั้นตอนในการตอบกลับข้อความของผู้ใช้จะสอดคล้องกัน

ยอมรับข้อความ

หากต้องการตอบรับข้อความที่ได้รับจากเว็บฮุค ให้แสดงการตอบกลับ HTTP ที่ถูกต้องต่อข้อความที่ส่งไปยังเว็บฮุค

หากไม่สามารถส่งข้อความได้เนื่องจากการแสดงผลหมดเวลา ความสามารถในการเข้าถึงของเว็บฮุค การเปลี่ยนเส้นทาง หรือปัญหาเกี่ยวกับสิทธิ์ Google จะจัดเก็บและส่งต่อข้อความโดยพยายามส่งซ้ําเป็นเวลา 7 วันหรือจนกว่าเว็บฮุคจะรับข้อความเรียบร้อยแล้ว

ยืนยันว่าข้อความมาจาก Google

คุณควรยืนยันว่า Google ส่งข้อความก่อนที่จะประมวลผลเนื้อหาของข้อความ

วิธียืนยันว่า Google ส่งข้อความที่คุณได้รับ

  1. แยกวิเคราะห์ส่วนหัว X-Goog-Signature ของข้อความ ซึ่งเป็นสําเนาที่เข้ารหัสฐานของเพย์โหลดของข้อความที่เข้ารหัสฐาน 64
  2. ใช้โทเค็นของไคลเอ็นต์ (ซึ่งจะแสดงเมื่อคุณกําหนดค่าเว็บฮุค) เป็นคีย์ แล้วสร้าง SHA512 HMAC ของไบต์ของเพย์โหลดของข้อความและเข้ารหัสผลลัพธ์เป็น Base64

  3. เปรียบเทียบแฮช X-Goog-Signature กับแฮชที่คุณสร้างขึ้น

    • หากแฮชตรงกัน แสดงว่า Google เป็นผู้ส่งข้อความแล้ว
    • หากแฮชไม่ตรงกัน ให้ตรวจสอบกระบวนการแฮชในข้อความที่ดี หากกระบวนการแฮชทํางานอย่างถูกต้องและคุณได้รับข้อความที่คิดว่าเป็นการฉ้อโกงที่ส่งถึงคุณ ติดต่อเรา (คุณต้องลงชื่อเข้าใช้ด้วยบัญชี Google ของ Business Messages)

ดูตัวอย่างการยืนยันข้อความในที่เก็บ GitHub สําหรับ Echo Bots ใน Java, Node.js และ Python

ระบุภาษา

ผู้ใช้สื่อสารจากหลายสถานที่และหลายภาษา Business Messages จะแสดงค่ากําหนดภาษาของผู้ใช้ด้วยช่อง resolvedLocale และ userDeviceLocale ซึ่งอิงตามการตั้งค่าภาษาในอุปกรณ์ของผู้ใช้ ดูการแปลและภาษาของ

หากเป็นไปได้ ให้กําหนดเส้นทางข้อความและเขียนการตอบกลับโดยอิงตามค่ากําหนดภาษาของผู้ใช้

กําหนดเส้นทางข้อความตามบริบทของข้อความ

บริบทของข้อความจะเป็นข้อมูลที่ผู้ใช้อาจกําลังมองหา ตัวอย่างเช่น หากผู้ใช้ส่งข้อความที่มีค่า placeId ผู้ใช้จะส่งข้อความถึงสถานที่เฉพาะ (ระบุโดย placeId) และมักจะถามคําถามเจาะจงสถานที่ได้ ในทํานองเดียวกัน หากข้อความมีค่า nearPlaceId ซึ่งระบุสถานที่ตั้งไว้ใกล้กับผู้ใช้ ผู้ใช้ก็น่าจะต้องการทราบข้อมูลตําแหน่งเฉพาะ แต่ตัวแทนควรยืนยันตําแหน่งที่ผู้ใช้ต้องการแชทก่อนเริ่มสนทนา

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

  • หากข้อความอยู่ในการสนทนาใหม่และเป็นคําถามที่พบบ่อย คุณอาจตอบคําถามด้วยระบบอัตโนมัติได้
  • หากระบบอัตโนมัติจัดการคําถามไม่ได้ ให้กําหนดเส้นทางคําถามไปยังตัวแทนแบบเรียลไทม์
  • หากภาษาของข้อความไม่ตรงกับภาษาเริ่มต้นของ Agent ให้กําหนดเส้นทางข้อความไปยังตัวแทนแบบเรียลไทม์ที่รองรับภาษาดังกล่าว
  • หากคําถามเกี่ยวข้องกับสถานที่ใดสถานที่หนึ่ง ให้กําหนดเส้นทางคําถามไปยังผู้ที่มีข้อมูลเกี่ยวกับสถานที่นั้น
  • หากข้อความอยู่ในการสนทนาที่กําลังดําเนินอยู่ ให้กําหนดเส้นทางข้อความไปยังตัวแทนแบบเรียลไทม์ที่มีส่วนร่วมในการสนทนา

ระบุประเภทข้อความที่ผู้ใช้ส่ง

ผู้ใช้สามารถส่งข้อความได้ 3 ประเภท ดังนี้

  • โดยข้อความ Text คือคําตอบรูปแบบอิสระ
  • ข้อความรูปภาพจะมี URL ที่ลงนามสําหรับรูปภาพที่ผู้ใช้อัปโหลด
  • ข้อความคําแนะนําจะรวมข้อมูล Postback และข้อความของการดําเนินการที่แนะนําหรือการตอบกลับที่แนะนําที่ผู้ใช้แตะ

ประมวลผลเนื้อหาข้อความ

หาก Agent ใช้ระบบอัตโนมัติ เนื้อหาของข้อความผู้ใช้จะนําทางตรรกะของ Agent ของคุณและมีคําตอบถัดไปในการสนทนา

วิธีที่ง่ายที่สุดในการระบุความตั้งใจของผู้ใช้คือข้อมูล Postback จากการตอบกลับที่แนะนําหรือการดําเนินการที่แนะนํา ข้อความ Postback จะอ่านได้ง่ายโดยไม่คํานึงถึงข้อความที่เกี่ยวข้องกับคําแนะนํา

หากผู้ใช้ส่งข้อความ SMS ตัวแทนของคุณอาจแยกวิเคราะห์การตอบกลับสําหรับคีย์เวิร์ดที่รองรับ หรือใช้การทําความเข้าใจภาษาธรรมชาติ (เช่น การผสานรวม Dialogflow เพื่อประมวลผลข้อความของผู้ใช้และระบุเส้นทางข้างหน้า

หากตัวแทนไม่รู้ว่าควรตอบกลับข้อความของผู้ใช้อย่างไร ตัวแทนควรตอบกลับสถานะข้อผิดพลาดและพยายามสนทนาต่อด้วยการให้ข้อมูลเพิ่มเติมแก่ผู้ใช้ โดยขอข้อความด้วยวิธีอื่นหรือโดยการส่งการสนทนาไปยังตัวแทนแบบเรียลไทม์

ตอบกลับผู้ใช้

หลังจากที่ตัวแทนระบุคําตอบที่ถูกต้องได้แล้ว ไม่ว่าจะผ่านการทํางานแบบอัตโนมัติหรือผ่านตัวแทนแบบเรียลไทม์ ตัวแทนจะส่งข้อความและสนทนากับผู้ใช้ต่อ

ขณะเขียนคําตอบ ให้พิจารณาภาษาของผู้ใช้ นอกจากนี้ คุณยังปรับแต่งการตอบกลับได้โดยการดึงค่าจากออบเจ็กต์ userInfo ในแต่ละข้อความที่ได้รับ

ประเภทข้อความ

รหัสต่อไปนี้จะแสดงวิธีที่ตัวแทนได้รับข้อความ

โปรดดูการจัดรูปแบบและข้อมูลค่าใน UserMessage

ข้อความ

วิธีที่ใช้กันมากที่สุดสําหรับผู้ใช้คือการเขียนด้วยข้อความธรรมดา SMS มีรูปแบบดังนี้

{
  "agent": "brands/BRAND_ID/agents/AGENT_ID",
  "conversationId": "CONVERSATION_ID",
  "customAgentId": "CUSTOM_AGENT_ID",
  "requestId": "REQUEST_ID",
  "message": {
    "messageId": "MESSAGE_ID",
    "name": "conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "text": "MESSAGE_TEXT",
    "createTime": "MESSAGE_CREATE_TIME",
  },
  "dialogflowResponse": {
    "autoResponded": "BOOLEAN",
    "faqResponse": {
      "userQuestion": "USER_QUESTION",
      "answers": [{
        "faqQuestion": "FAQ_QUESTION",
        "faqAnswer": "FAQ_ANSWER",
        "matchConfidenceLevel": "CONFIDENCE_LEVEL",
        "matchConfidence": "CONFIDENCE_NUMERIC",
      }],
    },
  },
  "context": {
    "entryPoint": "CONVERSATION_ENTRYPOINT",
    "placeId": "LOCATION_PLACE_ID",
    "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES",
    "userInfo": {
      "displayName": "USER_NAME",
      "userDeviceLocale": "USER_LOCALE",
    },
  },
  "sendTime": "SEND_TIME",
}

โปรดดูตัวเลือกการจัดรูปแบบและค่า ใน Message

รูปภาพ

นอกจากการส่งข้อความแล้ว ผู้ใช้ยังสามารถส่งรูปภาพให้ตัวแทนในรูปแบบข้อความได้อีกด้วย Business Messages จะจัดเก็บรูปภาพที่แชร์ไว้เป็นเวลา 7 วันใน URL ที่ลงนามและจะรวม URL เหล่านั้นไว้ในช่อง text ของเพย์โหลดของข้อความ

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

...
"message": {
    "text": "https://storage.googleapis.com/business-messages-us/936640919331/jzsu6cdguNGsBhmGJGuLs1DS?x-goog-algorithm\u003dGOOG4-RSA-SHA256\u0026x-goog-credential\u003duranium%40rcs-uranium.iam.gserviceaccount.com%2F20190826%2Fauto%2Fstorage%2Fgoog4_request\u0026x-goog-date\u003d20190826T201038Z\u0026x-goog-expires\u003d604800\u0026x-goog-signedheaders\u003dhost\u0026x-goog-signature\u003d89dbf7a74d21ab42ad25be071b37840a544a43d68e67270382054e1442d375b0b53d15496dbba12896b9d88a6501cac03b5cfca45d789da3e0cae75b050a89d8f54c1ffb27e467bd6ba1d146b7d42e30504c295c5c372a46e44728f554ba74b7b99bd9c6d3ed45f18588ed1b04522af1a47330cff73a711a6a8c65bb15e3289f480486f6695127e1014727cac949e284a7f74afd8220840159c589d48dddef1cc97b248dfc34802570448242eac4d7190b1b10a008404a330b4ff6f9656fa84e87f9a18ab59dc9b91e54ad11ffdc0ad1dc9d1ccc7855c0d263d93fce6f999971ec79879f922b582cf3bb196a1fedc3eefa226bb412e49af7dfd91cc072608e98"
  }
...

โปรดดูตัวเลือกการจัดรูปแบบและค่า ใน Message

คำแนะนำ

การตอบกลับที่แนะนําและการดําเนินการที่แนะนําช่วยให้ผู้ใช้ตอบกลับหรือ ดําเนินการด้วยการแตะเพียงครั้งเดียว เมื่อผู้ใช้แตะคําแนะนํา ตัวแทนจะได้รับเพย์โหลดพร้อมกับข้อความคําแนะนําและข้อมูลระบบรายงานผล Conversion

ข้อความคําแนะนํามีรูปแบบต่อไปนี้

{
  "agent": "brands/BRAND_ID/agents/AGENT_ID",
  "conversationId": "CONVERSATION_ID",
  "customAgentId": "CUSTOM_AGENT_ID",
  "requestId": "REQUEST_ID",
  "suggestionResponse": {
    "message": "conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "postbackData": "POSTBACK_DATA",
    "createTime": "RESPONSE_CREATE_TIME",
    "text": "SUGGESTION_TEXT",
    "suggestionType": "SUGGESTION_TYPE",
  }
  "context": {
    "entryPoint": "CONVERSATION_ENTRYPOINT",
    "placeId": "LOCATION_PLACE_ID",
    "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES",
    "userInfo": {
      "displayName": "USER_NAME",
      "userDeviceLocale": "USER_LOCALE",
    },
  },
  "sendTime": "SEND_TIME",
}

โปรดดูตัวเลือกการจัดรูปแบบและค่า ใน SuggestionResponse

คําขอการตรวจสอบสิทธิ์

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

หากผู้ใช้ลงชื่อเข้าใช้ด้วยผู้ให้บริการ OAuth ที่ระบุไว้สําเร็จ ตัวแทนจะได้รับเพย์โหลดพร้อมกับรหัสการให้สิทธิ์ หากผู้ใช้ลงชื่อเข้าใช้ไม่สําเร็จ ตัวแทนจะได้รับเพย์โหลดพร้อมรายละเอียดข้อผิดพลาด

ข้อความคําขอการตรวจสอบสิทธิ์จะมีรูปแบบต่อไปนี้

{
  "agent": "brands/BRAND_ID/agents/AGENT_ID",
  "conversationId": "CONVERSATION_ID",
  "customAgentId": "CUSTOM_AGENT_ID",
  "requestId": "REQUEST_ID",
  "authenticationResponse": {
    "code": "AUTHORIZATION_CODE",
    "redirect_uri": "REDIRECT_URI",
    "errorDetails": {
      "error": "ERROR",
      "errorDescription": "ERROR_DESCRIPTION",
    },
  }
  "context": {
    "entryPoint": "CONVERSATION_ENTRYPOINT",
    "placeId": "LOCATION_PLACE_ID",
    "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES",
    "userInfo": {
      "displayName": "USER_NAME",
      "userDeviceLocale": "USER_LOCALE",
    },
  },
  "sendTime": "SEND_TIME",
}

โปรดดูตัวเลือกการจัดรูปแบบและค่า ใน AuthenticationResponse

บริบทของข้อความ

แต่ละข้อความจะมีข้อมูลบริบทเกี่ยวกับตําแหน่งของข้อความ

...
  "context": {
    "customContext": "CUSTOM_CONTEXT",
    "entryPoint": "CONVERSATION_ENTRYPOINT",
    "placeId": "LOCATION_PLACE_ID",
    "nearPlaceId": "NEARBY_LOCATION_PLACE_ID",
    "deflectedPhoneNumber": "DEFLECTED_PHONE_NUMBER",
    "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES",
    "userInfo": {
      "displayName": "USER_NAME",
      "userDeviceLocale": "USER_LOCALE",
    },
    "widget": {
      "url": "WEBSITE_URL",
      "widgetContext": "WIDGET_CONTEXT",
    },
  },
...
ช่อง คำอธิบาย
customContext ข้อมูลบริบทที่พาร์ทเนอร์ระบุ
entryPoint แพลตฟอร์มการรับส่งข้อความที่ผู้ใช้เริ่มต้นการสนทนาตามที่กําหนดโดย EntryPoint
placeId ตัวระบุที่ไม่ซ้ํากันจากฐานข้อมูล Google Places สําหรับสถานที่ที่ผู้ใช้ส่งข้อความถึง โดยจะปรากฏในข้อความจากจุดเข้าถึงเฉพาะสถานที่เท่านั้น
nearPlaceId ตัวระบุที่ไม่ซ้ํากันจากฐานข้อมูล Google Places สําหรับสถานที่แรกใน Local Pack ยืนยันสถานที่ที่ผู้ใช้ต้องการแชทด้วยเมื่อได้รับค่า nearPlaceId
deflectedPhoneNumber หมายเลขโทรศัพท์ที่ Business Messages แจ้งผู้ใช้ไม่ให้โทรเมื่อเริ่มการสนทนา
resolvedLocale

รายการที่ตรงกันที่คํานวณมากที่สุดของภาษาของผู้ใช้ (รายงานใน userDeviceLocale) และภาษาที่รองรับของ Agent (ระบุด้วยการตั้งค่าการสนทนาที่ระบุ) ดูการแปลและเริ่มการสนทนา

ค่าภาษาคือแท็กภาษา IETF BCP 47 ที่มีรูปแบบถูกต้อง

userInfo.displayName ชื่อของผู้ใช้ที่ส่งข้อความ หากผู้ใช้เลือกไม่ใช้การแชร์ข้อมูลประจําตัว ช่องนี้จะว่างเปล่า
userInfo.userDeviceLocale ภาษาของผู้ใช้ซึ่งรายงานโดยอุปกรณ์เป็นแท็กภาษา IETF BCP 47 ที่มีรูปแบบถูกต้อง
widget.url URL ของเว็บไซต์ที่เปิดตัวบทสนทนาขึ้น
widget.widgetContext ค่าแอตทริบิวต์ data-bm-widget-context ของวิดเจ็ตที่ใช้เริ่มการสนทนา

ประวัติการสนทนา

Google ไม่ได้ให้ประวัติการสนทนา สนทนาตามการสนทนาที่ผ่านมาในลักษณะที่สอดคล้องกับนโยบายความเป็นส่วนตัวและแนวทางปฏิบัติแนะนําเพื่อให้คุณส่งคําตอบล่าสุดไปยังข้อความจากผู้ใช้ได้ในภายหลัง