גרסה מדור קודם של Dialogflow CX Messenger

השילוב הקודם של Dialogflow CX Messenger מספק תיבת דו-שיח לצ'אט עם הנציג, שאפשר להתאים אישית ולהטמיע באתר. המשתמשים יכולים לפתוח ולסגור את תיבת הדו-שיח של הצ'אט כחלון. כשמשתמש פותח את תיבת הדו-שיח של הצ'אט, היא מופיעה מעל התוכן שלכם בפינה השמאלית התחתונה של המסך.

מעבר לגרסה העדכנית של Dialogflow CX Messenger

הגרסה העדכנית של Dialogflow CX Messenger מספקת אימות כדי לשלוט בגישה לשאילתות של הנציג, ואפשרויות נוספות להגדרת ממשק המשתמש. מומלץ לעבור מהגרסה הקודמת לגרסה החדשה.

אם הפעלתם את השילוב של Dialogflow CX Messenger לפני 29 באוגוסט 2023, יכול להיות שאתם משתמשים בגרסה הקודמת. כדי לבדוק אם אתם משתמשים בגרסה הקודמת, צריך לבדוק את קוד ה-HTML של Messenger שמוטמע באתר. אם מופיע הסקריפט הבא, אתם משתמשים בגרסה הקודמת:

https://www.gstatic.com/dialogflow-console/fast/messenger-cx/bootstrap.js?v=1

כדי לעבור לגרסה החדשה, צריך לבצע את השלבים הבאים:

  1. מוחקים מהאתר את כל קודי ה-HTML, ה-CSS וה-JavaScript של הצ'אט.
  2. פועלים לפי ההוראות לשילוב העדכני של Dialogflow CX Messenger.

התאמות אישיות של HTML

אתם יכולים להתאים אישית את המראה וההתנהגות של תיבת הדו-שיח של הצ'אט.

לרכיב ה-HTML‏ df-messenger יש את המאפיינים הבאים:

מאפיין מדיניות הקלט ערך
agent-id חובה מזהה הסוכן שמשויך לסוכן. השדה הזה מאוכלס מראש במזהה הסוכן שלכם.
chat-icon אופציונלי הסמל של הכפתור לפתיחת תיבת הדו-שיח של הצ'אט. הסמל של Dialogflow CX הוא ברירת המחדל. השדה הזה חייב להיות כתובת URL ציבורית. גודל הסמל צריך להיות 36px על 36px.
chat-title חובה הכותרת שמוצגת בחלק העליון של תיבת הדו-שיח של הצ'אט. השדה הזה מאוכלס מראש בשם של הסוכן.
df-cx חובה מציין שהאינטראקציה היא עם סוכן CX. משתמשים בערך true.
expand אופציונלי מאפיין בוליאני שקובע שתיבת הדו-שיח של הצ'אט תיפתח כשהדף ייטען. כברירת מחדל, תיבת הדו-שיח של הצ'אט סגורה כשטעינת הדף מתבצעת.
intent אופציונלי אירוע מותאם אישית שמופעל כשתיבת הדו-שיח של הצ'אט נפתחת. אפשר להשתמש בגורם מטפל באירועים שמופעל באירוע הזה ומפיק את ההודעה הראשונה של הנציג.
language-code חובה קוד השפה שמוגדר כברירת מחדל ל-Intent הראשון. השדה הזה מאוכלס מראש בשפת ברירת המחדל של הנציג.
location חובה האזור של הנציג.
session-id אופציונלי מזהה סשן. אם לא תספקו מזהה, האינטגרציה תיצור מזהה ייחודי לכל תיבת דו-שיח בצ'אט.
user-id אופציונלי מאפשר לעקוב אחרי משתמש בסשנים שונים. אפשר להעביר את הערך ל-Dialogflow CX דרך השדה queryParams.payload.userId בבקשה לזיהוי כוונה, ו-Dialogflow CX מספק את הערך הזה דרך השדה WebhookRequest.payload.userId.
wait-open אופציונלי מאפיין בוליאני שמעכב את האירוע בהתאמה אישית שמוגדר במאפיין intent עד שתיבת הדו-שיח נפתחת בפועל.

התאמות אישיות של CSS

אתם יכולים להתאים אישית את הסגנון של תיבת הדו-שיח של הצ'אט באמצעות הגדרת משתני CSS.

אפשר להגדיר את משתני ה-CSS הבאים:

משתנה CSS הנכס המושפע
df-messenger-bot-message צבע הרקע של הבועה להודעות של הנציג.
df-messenger-button-titlebar-color הצבע של הכפתור הצף ושל שורת הכותרת בתיבת הדו-שיח של הצ'אט.
df-messenger-button-titlebar-font-color צבע הגופן של הכותרת בסרגל הכותרת.
df-messenger-chat-background-color צבע הרקע של תיבת הדו-שיח של הצ'אט.
df-messenger-font-color צבע הגופן של ההודעות.
df-messenger-input-box-color צבע הרקע של תיבת הקלט של הטקסט.
df-messenger-input-font-color צבע הגופן של תיבת הקלט להזנת הטקסט.
df-messenger-input-placeholder-font-color צבע הגופן של הטקסט לדוגמה בתיבת הקלט של הטקסט.
df-messenger-minimized-chat-close-icon-color הצבע של סמל הסגירה בתצוגת הצ'אט הסגור.
df-messenger-send-icon הצבע של סמל השליחה בתיבת הקלט של הטקסט.
df-messenger-user-message צבע הרקע של הבועה להודעות של משתמשים.

קוד לדוגמה

<style>
  df-messenger {
   --df-messenger-bot-message: #878fac;
   --df-messenger-button-titlebar-color: #df9b56;
   --df-messenger-chat-background-color: #fafafa;
   --df-messenger-font-color: white;
   --df-messenger-send-icon: #878fac;
   --df-messenger-user-message: #479b3d;
  }
</style>

ההגדרות האלה יגרמו לתוצאות הבאות:

תיבת דו-שיח של צ'אט

אירועי JavaScript

‫Dialogflow Messenger מפעיל מגוון אירועים שאפשר ליצור להם רכיבי event listener.

יעד האירוע של האירועים האלה הוא הרכיב df-messenger.

כדי להוסיף פונקציית event listener לרכיב df-messenger, צריך להוסיף את קוד ה-JavaScript הבא, כאשר event-type הוא אחד משמות האירועים שמתוארים בהמשך:

const dfMessenger = document.querySelector('df-messenger');
dfMessenger.addEventListener('event-type', function (event) {
  // Handle event
  ...
});

אלה סוגי האירועים שנתמכים:

df-accordion-clicked

האירוע הזה מתרחש כשמשתמש לוחץ על רכיב אקורדיון. מבנה האירוע נראה כך:

element: {
  title: string,
  subtitle: string,
  image: {
    src: {rawUrl: string}
  },
  text: string
}

df-button-clicked

האירוע הזה מתרחש כשמשתמש לוחץ על רכיב של לחצן. מבנה האירוע נראה כך:

element: {
  icon: {
    type: string,
    color: string
  },
  text: string,
  link: string,
  event: EventInput,
  payload: {}
}

df-chip-clicked

האירוע הזה מתרחש כשמשתמש בוחר הצעות קשורות. מבנה האירוע נראה כך:

query: string // Text of the suggestion chip that was selected.

df-info-card-clicked

האירוע הזה מתרחש כשמשתמש הקצה לוחץ על פריט המידע בסרגל הכותרת. מבנה האירוע נראה כך:

element: {
  title: string,
  image: {
    src: {rawUrl: string}
  },
  actionLink: string
}

df-list-element-clicked

האירוע הזה מתרחש כשמשתמש לוחץ על פריט ברשימה. מבנה האירוע נראה כך:

element: {
  title: string,
  subtitle: string,
  image: {
    src: {rawUrl}
  },
  event: {
    name: string
  },
  payload: {}
}

df-messenger-error

האירוע הזה מתרחש כש-Dialogflow API שולח קוד סטטוס של שגיאה. מבנה האירוע נראה כך:

error: {
  "error": {
    "code": <error_code>,
    "message": <error_message>,
    "status": <error_status>
  }
}

df-messenger-loaded

האירוע הזה מופעל כשהרכיב df-messenger נטען ומופעל במלואו.

df-request-sent

האירוע הזה מתרחש כשנשלחת בקשה ל-Dialogflow API. אפשר להשתמש באירוע הזה, יחד עם df-response-received, כדי לעקוב אחרי זמן האחזור של הבקשה. מבנה האירוע נראה כך:

requestBody: {
  "queryParams": {
    object(QueryParameters)
  },
  "queryInput": {
    object(QueryInput)
  },
  "inputAudio": string
}

df-response-received

האירוע הזה מתרחש כשמתקבלת תשובה מ-Dialogflow API. מבנה האירוע נראה כך:

response: detectIntentResponse

df-user-input-entered

האירוע הזה מתרחש כשמשתמש הקצה מזין שאילתה. מבנה האירוע נראה כך:

input: string // Text entered by user

פונקציות JavaScript

אפשר להפעיל פונקציות שסופקו על ידי הרכיב df-messenger כדי להשפיע על ההתנהגות שלו.

renderCustomText

הפונקציה הזו מעבדת הודעת טקסט, כאילו היא הגיעה מ-Dialogflow CX כתגובת טקסט.

לדוגמה:

const dfMessenger = document.querySelector('df-messenger');
dfMessenger.renderCustomText('Custom text');

renderCustomCard

הפונקציה הזו יוצרת כרטיס בהתאמה אישית, כאילו הוא הגיע ממילוי בקשה ב-Dialogflow CX. הפורמט של התגובה עם המטען הייעודי (payload) המותאם אישית מוגדר בקטע Fulfillment.

לדוגמה:

const dfMessenger = document.querySelector('df-messenger');
const payload = [
  {
    "type": "info",
    "title": "Info item title",
    "subtitle": "Info item subtitle",
    "image": {
      "src": {
        "rawUrl": "https://example.com/images/logo.png"
      }
    },
    "actionLink": "https://example.com"
  }];
dfMessenger.renderCustomCard(payload);

showMinChat

הפונקציה הזו מציגה גרסה מינימלית של רשימות ההודעות.

לדוגמה:

const dfMessenger = document.querySelector('df-messenger');
dfMessenger.showMinChat();

מילוי בקשות

כשיוצרים מילוי בקשה, אפשר ליצור תגובות טקסט ומטענים ייעודיים (payloads) מותאמים אישית. התשובות בטקסט משמשות לתשובות בסיסיות של הנציג, והמטענים הייעודיים המותאמים אישית משמשים לתשובות עשירות. הפורמט של המטען הייעודי (payload) המותאם אישית לכל סוגי התשובות הוא במבנה הבסיסי הבא:

{
  "richContent": [
    [
      {
        "type": "type-id",
        ...
      },
      {
        "type": "type-id",
        ...
      }
    ],
    [
      {
        "type": "type-id",
        ...
      },
      {
        "type": "type-id",
        ...
      }
    ]
  ]
}

הערך richContent מאפשר מערך חיצוני אחד ומספר מערכים פנימיים. התשובות במערך פנימי מקובצות יחד בכרטיס חזותי אחד. כשהמערך החיצוני מכיל כמה מערכים פנימיים, מוצגים כמה כרטיסים, אחד לכל מערך פנימי.

בסעיפי המשנה הבאים מתוארים סוגי התשובות השונים שאפשר להגדיר למטען ייעודי (payload) מותאם אישית.

סוג התגובה של המידע

סוג התגובה 'מידע' הוא שקופית פתיחה שאפשר ללחוץ עליה.

כרטיס פריט מידע

הטבלה הבאה מתארת את השדות:

שם סוג תיאור
type מחרוזת סוג התגובה: "info".
title מחרוזת כותרת הכרטיס.
subtitle מחרוזת כותרת המשנה של הכרטיס.
image אובייקט תמונה.
image.src אובייקט מקור התמונה.
image.src.rawUrl מחרוזת כתובת URL ציבורית של התמונה.
actionLink מחרוזת כתובת ה-URL שאליה המשתמשים מועברים כשהם לוחצים על הכרטיס.

לדוגמה:

{
  "richContent": [
    [
      {
        "type": "info",
        "title": "Info item title",
        "subtitle": "Info item subtitle",
        "image": {
          "src": {
            "rawUrl": "https://example.com/images/logo.png"
          }
        },
        "actionLink": "https://example.com"
      }
    ]
  ]
}

סוג התגובה לתיאור

סוג התשובה "תיאור" הוא כרטיס אינפורמטיבי שיכול להכיל כמה שורות טקסט.

כרטיס תיאור

הטבלה הבאה מתארת את השדות:

שם סוג תיאור
type מחרוזת סוג התשובה: "תיאור".
title מחרוזת כותרת הכרטיס.
text array<string> מערך של מחרוזות, שבו כל מחרוזת מוצגת בשורה חדשה.

לדוגמה:

{
  "richContent": [
    [
      {
        "type": "description",
        "title": "Description title",
        "text": [
          "This is text line 1.",
          "This is text line 2."
        ]
      }
    ]
  ]
}

סוג התשובה של התמונה

סוג התגובה "תמונה" הוא כרטיס תמונה שהמשתמשים יכולים ללחוץ עליו או לגעת בו.

כרטיס תמונה

הטבלה הבאה מתארת את השדות:

שם סוג תיאור
type מחרוזת סוג התשובה: "תמונה".
rawUrl מחרוזת כתובת URL ציבורית של התמונה.
accessibilityText מחרוזת טקסט חלופי לתמונה.

לדוגמה:

{
  "richContent": [
    [
      {
        "type": "image",
        "rawUrl": "https://example.com/images/logo.png",
        "accessibilityText": "Example logo"
      }
    ]
  ]
}

סוג התגובה של הכפתור

סוג התשובה "כפתור" הוא כפתור קטן עם סמל ותווית טקסט שאפשר ללחוץ עליו או לגעת בו.

כפתור קטן

הטבלה הבאה מתארת את השדות:

שם סוג תיאור
type מחרוזת סוג התגובה: "כפתור".
icon אובייקט סמל של כפתור.
icon.type מחרוזת סמל מספריית הסמלים של Material. סמל ברירת המחדל הוא חץ.
icon.color מחרוזת קוד הקסדצימלי של צבע.
text מחרוזת טקסט הכפתור.
link מחרוזת כתובת ה-URL שאליה המשתמשים מועברים כשהם לוחצים על הכפתור.
event אובייקט אירוע Dialogflow CX שמופעל כשלוחצים על הכפתור.

לדוגמה:

{
  "richContent": [
    [
      {
        "type": "button",
        "icon": {
          "type": "chevron_right",
          "color": "#FF9800"
        },
        "text": "Button text",
        "link": "https://example.com",
        "event": {
          "name": ""
        }
      }
    ]
  ]
}

סוג התגובה של הרשימה

סוג התגובה "רשימה" הוא כרטיס עם כמה אפשרויות שהמשתמשים יכולים לבחור מתוכן.

כרטיס של פריט ברשימה

התשובה מכילה מערך של סוגי התשובות list ו-divider.

בטבלה הבאה מתואר הסוג list:

שם סוג תיאור
type מחרוזת סוג התשובה: "רשימה".
title מחרוזת כותרת האפשרות.
subtitle מחרוזת כותרת המשנה של האפשרות.
event אובייקט אירוע Dialogflow CX שמופעל כשלוחצים על האפשרות.

בטבלה הבאה מתואר הסוג divider:

שם סוג תיאור
type מחרוזת סוג התגובה: "divider".

לדוגמה:

{
  "richContent": [
    [
      {
        "type": "list",
        "title": "List item 1 title",
        "subtitle": "List item 1 subtitle",
        "event": {
          "name": ""
        }
      },
      {
        "type": "divider"
      },
      {
        "type": "list",
        "title": "List item 2 title",
        "subtitle": "List item 2 subtitle",
        "event": {
          "name": ""
        }
      }
    ]
  ]
}

סוג התשובה: אקורדיון

סוג התשובה "אקורדיון" הוא כרטיס קטן שאפשר ללחוץ עליו או לגעת בו כדי להרחיב אותו ולראות עוד טקסט.

כרטיס אקורדיון

הטבלה הבאה מתארת את השדות:

שם סוג תיאור
type מחרוזת סוג התשובה: "אקורדיון".
title מחרוזת כותרת האקורדיון.
subtitle מחרוזת כותרת המשנה של האקורדיון.
image אובייקט תמונה.
image.src אובייקט מקור התמונה.
image.src.rawUrl מחרוזת כתובת ה-URL הציבורית של התמונה.
text מחרוזת טקסט לאקורדיון.

לדוגמה:

{
  "richContent": [
    [
      {
        "type": "accordion",
        "title": "Accordion title",
        "subtitle": "Accordion subtitle",
        "image": {
          "src": {
            "rawUrl": "https://example.com/images/logo.png"
          }
        },
        "text": "Accordion text"
      }
    ]
  ]
}

סוג התגובה של הצעות קשורות

סוג התשובה של הצעות קשורות מספק למשתמש הקצה רשימה של הצעות קשורות שאפשר ללחוץ עליהן.

כרטיס של הצעות קשורות

הטבלה הבאה מתארת את השדות:

שם סוג תיאור
type מחרוזת סוג התשובה: "צ'יפים".
options array<object> מערך של אובייקטי אפשרויות.
options[].text מחרוזת הטקסט של האפשרות.
options[].image אובייקט תמונה של האפשרות.
options[].image.src אובייקט מקור התמונה של האפשרות.
options[].image.src.rawUrl מחרוזת כתובת URL ציבורית אופציונלית לתמונה.
options[].link מחרוזת כתובת ה-URL של הקישור לאפשרות.

לדוגמה:

{
  "richContent": [
    [
      {
        "type": "chips",
        "options": [
          {
            "text": "Chip 1",
            "image": {
              "src": {
                "rawUrl": "https://example.com/images/logo.png"
              }
            },
            "link": "https://example.com"
          },
          {
            "text": "Chip 2",
            "image": {
              "src": {
                "rawUrl": "https://example.com/images/logo.png"
              }
            },
            "link": "https://example.com"
          }
        ]
      }
    ]
  ]
}

שילוב של סוגי תגובות

אתם יכולים להשתמש ברכיבים השונים של ההודעות העשירות ב-Dialogflow CX Messenger כדי ליצור כרטיס בהתאמה אישית לפי הצרכים שלכם.

הנה דוגמה לשימוש בחלק מהרכיבים שצוינו למעלה:

כרטיס בהתאמה אישית

{
  "richContent": [
    [
      {
        "type": "image",
        "rawUrl": "https://example.com/images/logo.png",
        "accessibilityText": "Dialogflow CX across platforms"
      },
      {
        "type": "info",
        "title": "Dialogflow CX",
        "subtitle": "Build natural and rich conversational experiences",
        "actionLink": "https://cloud.google.com/dialogflow/docs"
      },
      {
        "type": "chips",
        "options": [
          {
            "text": "Case Studies",
            "link": "https://cloud.google.com/dialogflow/case-studies"
          },
          {
            "text": "Docs",
            "link": "https://cloud.google.com/dialogflow/docs"
          }
        ]
      }
    ]
  ]
}

ניפוי באגים

כדי לבדוק את הנציג באופן מקומי באמצעות Dialogflow CX Messenger:

  • מטמיעים את הרכיב של Dialogflow CX Messenger בדף, כמו שמתואר בקטע התאמות אישיות של HTML.
  • מפעילים שרת HTTP מקומי לדף הזה עם יציאה ספציפית.
  • כדי לגשת לדף הזה, צריך לעבור אל http://localhost:port_number.