כתיבה מהירה

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

סוכן אנושי מקבל הצעה לטקסט בזמן שהוא מקליד בממשק צ'אט. במדריך הזה מוסבר איך להטמיע את התכונה 'השלמה חכמה' באמצעות קריאה ישירה ל-API. אם אתם מעדיפים, אתם יכולים להשתמש במסוף Agent Assist כדי לאמן מודל ולבדוק את הביצועים שלו באמצעות הסימולטור. הוראות מפורטות זמינות במדריך לסימולטור של 'כתיבה מהירה'.

במסמכי השיטות המומלצות לשימוש ב'כתיבה מהירה' מפורטות הנחיות לשילוב של 'כתיבה מהירה' במערכת שלכם ולשיפור איכות ההצעות.

לפני שמתחילים

לפני שקוראים את המדריך הזה, צריך לבצע את הפעולות הבאות:

  1. מפעילים את Dialog Flow API בפרויקט.

פרטים אישיים מזהים ונתונים של ילדים

כששולחים נתונים ל-API הזה, הוא מנסה להסתיר את כל הפרטים האישיים המזהים (PII). אם אתם רוצים לוודא שהמודל לא כולל מידע אישי מזהה (PII), אתם צריכים לבצע סניטציה של הנתונים לפני שאתם שולחים אותם ל-API. מחליפים את המילים שהוסרו ב-placeholder כמו `REDACTED_NUMBER` או `REDACTED_NAME` במקום פשוט להסיר אותן.

בנוסף, אם הנתונים שלכם כוללים מידע שנאסף מילדים, עליכם להסיר את נתוני הילדים לפני שליחתם אל ה-API.

אימון ופריסה של מודל

מודלים של תשובות מהירות ב-Agent Assist מאומנים באמצעות מערכי נתונים של שיחות. מערך נתונים של שיחות מכיל נתוני תמלילים שהעליתם. בקטע הזה מתואר התהליך של יצירת מערך נתונים של שיחות, העלאת נתוני השיחות אליו, אימון מודל ופריסת המודל. אפשר גם לבצע את הפעולות האלה באמצעות מסוף Agent Assist אם אתם מעדיפים לא להפעיל את ה-API ישירות.

יצירת מערך נתונים של שיחות

לפני שמתחילים להעלות תמלילי שיחות, צריך ליצור מערך נתונים של שיחות כדי להוסיף אותם אליו. כדי ליצור מערך נתונים של שיחות, קוראים ל-method‏ create במשאב ConversationDataset.

התשובה מכילה מזהה של מערך נתונים של שיחה.

ייבוא תמלילי שיחות למערך נתוני השיחות

מעלים את נתוני השיחות בצ'אט למערך נתוני השיחות כדי ש-Agent Assist יוכל לעבד אותם. חשוב לוודא שתמליל של כל שיחה הוא בפורמט JSON ומאוחסן בקטגוריה של Cloud Storage. מערך נתונים של שיחות צריך להכיל לפחות 30,000 שיחות, אחרת אימון המודל ייכשל. ככלל, ככל שתנהלו יותר שיחות, כך איכות המודל תהיה טובה יותר. מומלץ להעלות לפחות 3 חודשים של שיחות כדי לכסות כמה שיותר תרחישי שימוש. מספר ההודעות המקסימלי במערך נתונים של שיחות הוא 1,000,000.

מבצעים קריאה ל-importConversationData במשאב ConversationDataset כדי לייבא את השיחות.

שדות חובה:

  • המזהה של קבוצת הנתונים של השיחות שיצרתם קודם.
  • הנתיב inputConfig מוביל לנתוני התמליל של השיחה בקטגוריה של Cloud Storage.

התגובה היא פעולה ממושכת, שאפשר לבצע עליה דגימה כדי לבדוק אם היא הושלמה.

יצירת מודל שיחה

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

שדות חובה:

  • ב-datasets, מציינים קבוצת נתונים אחת באמצעות מזהה קבוצת הנתונים של השיחות שיצרתם קודם.
  • מגדירים את smartReplyModelMetadata כאובייקט ריק או מאכלסים את השדה כדי לשנות את ברירת המחדל.

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

  • מזהה הדגם: name
  • מזהה רשימת ההיתרים: smart_reply_model_metadata.associated_allowlist_info.document

פריסת מודל השיחה

מבצעים קריאה ל-method‏ deploy במשאב ConversationModel כדי לפרוס את מודל השיחה.

שדה חובה:

  • שימוש ב-conversationModels: מזינים את מזהה מודל השיחה שיצרתם קודם.

ניהול רשימת היתרים

לכל מודל יש רשימת היתרים שמשויכת אליו, שנוצרת אוטומטית כשיוצרים מודל שיחה. רשימת ההיתרים מכילה את כל התשובות שנוצרו ממערכי הנתונים של השיחות, שאפשר להציג לסוכן אנושי בזמן הריצה. בקטע הזה מוסבר איך ליצור ולנהל רשימות היתרים. אפשר לבצע את הפעולות האלה גם באמצעות מסוף Agent Assist אם אתם מעדיפים לא לבצע קריאה ישירה ל-API.

ייצוא התוכן של רשימת ההיתרים לקובץ CSV

כשיוצרים מודל, המערכת יוצרת באופן אוטומטי רשימת היתרים שמשויכת למודל החדש. הרשימה הלבנה היא משאב מסוג Document עם מזהה ייחודי. המזהה מוחזר ב-smart_reply_model_metadata.associated_allowlist_info.document כשיוצרים מודל. כדי לבדוק את ההודעות ברשימת ההיתרים ולבצע בהן שינויים, צריך לייצא אותה לקטגוריה של Cloud Storage.

קוראים ל-method‏ export במשאב Document כדי לייצא את המסמך לקובץ CSV בקטגוריה של Cloud Storage. השדה smart_messaging_partial_update הוא אופציונלי, אבל הוא משפיע על האופן שבו תוכלו לעדכן את רשימת ההיתרים הזו בעתיד. אם הערך הוא true, קובץ CSV המיוצא יכלול עמודה עם מזהה ייחודי לכל הודעה. אפשר להשתמש במזהה ההודעה כדי לעדכן רק הודעות ספציפיות במקום את כל המסמך. אם המדיניות smart_messaging_partial_update מוגדרת לערך false או לא מוגדרת, העמודה הנוספת לא תופיע בקובץ, וכל עדכון של רשימת ההיתרים ידרוש עדכון של המסמך כולו.

שדה חובה:

  • הנתיב gcsDestination מוביל לקטגוריה שלכם ב-Cloud Storage.

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

בדיקת רשימת ההיתרים

רשימת ההיתרים שנוצרת כוללת תשובות שנוצרו באופן אוטומטי על ידי התכונה 'תשובה חכמה' על סמך נתוני השיחות שלכם. עכשיו אפשר לבדוק ולעדכן את התשובות האלה לפי הצורך. מורידים את הקובץ CSV מקטגוריה של Cloud Storage, עורכים אותו בהתאם לצרכים ומעלים אותו בחזרה לקטגוריה של Cloud Storage. רק תשובות שנכללות ברשימת ההיתרים יכולות להיות מוצגות לנציגים אנושיים.

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

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

עדכון רשימת ההיתרים

אחרי שמסיימים לעדכן את קובץ CSV, אפשר להשתמש בו כדי לעדכן את מקור Document. אתם יכולים לבחור לעדכן את כל רשימת ההיתרים או רק הודעות ספציפיות. כדי לעדכן רק הודעות ספציפיות, צריך להגדיר את smart_messaging_partial_update ל-true כשמייצאים את רשימת ההיתרים. אם כבר עשיתם את זה, תוכלו להשתמש בעמודה שנוצרה באופן אוטומטי בקובץ CSV המיוצא כדי לציין את ההודעות שצריך לעדכן.

מבצעים קריאה לשיטה reload במשאב Document כדי לעדכן את רשימת ההיתרים. כדי לעדכן רק הודעות ספציפיות, מגדירים את smart_messaging_partial_update לערך true ב-ReloadDocumentRequest. כדי לעדכן את כל רשימת ההיתרים, משאירים את smart_messaging_partial_update ללא הגדרה או מגדירים אותו ל-false.

שדות חובה:

  • gcsSource הוא הנתיב ב-Cloud Storage לקובץ CSV.
  • בשביל name, משתמשים בשם המשאב של רשימת ההיתרים שנוצר כשיצרתם מודל לשיחה.

דוגמה לבקשה:

{
  "name":"projects/project-id/knowledgeBases/knowledge-base-id/documents/allowlist-id",
  "gcsSource" {
      "uri": "gs://revised_smart_reply_allowlist_path"
   }
}

הערכת הביצועים של מודל שאומן

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

כדי ליצור הערכה חדשה של מודל, קוראים לשיטה CreateConversationModelEvaluation במשאב ConversationModel. השיטה הזו מחזירה פעולה ממושכת. אפשר לדגום את הפעולה כדי לבדוק את הסטטוס שלה, ואז יוחזר אחד מהערכים הבאים: INITIALIZING, ‏ RUNNING, ‏ SUCCEEDED, ‏ CANCELLED, ‏ FAILED.

שדות חובה:

  • InputDataset: מערך הנתונים של הבדיקה שישמש לבדיקת הביצועים של המודל.
  • allowlist_document: הרשימה הלבנה שמשויכת למודל של תשובה מהירה שרוצים לבדוק.

כשפעולה ממושכת מסתיימת, מוחזר משאב ConversationModelEvaluation. הדוח כולל שני מדדים:

  • allowlist_coverage: אחוז ההודעות של הנציגים במערך נתוני הבדיקה שנכללות ברשימת ההיתרים.
  • recall: אחוז ההודעות של הנציגים במערך נתוני הבדיקה שנכללות ברשימת ההיתרים ומופיעות בין 3 ההצעות הראשונות שמוצגות על ידי מודל התשובה החכמה.

הגדרת פרופיל שיחה

פרופיל שיחה מגדיר קבוצה של פרמטרים ששולטים בהצעות שמוצגות לסוכן במהלך שיחה. בשלבים הבאים יוצרים ConversationProfile עם אובייקט HumanAgentAssistantConfig. אפשר לבצע את הפעולות האלה גם באמצעות מסוף Agent Assist אם אתם מעדיפים לא לבצע קריאה ישירה ל-API.

יצירת פרופיל שיחה

כדי ליצור פרופיל שיחה, מבצעים קריאה ל-method‏ create במשאב ConversationProfile. צריך לספק את מזהה מאגר הידע, מזהה המסמך, מזהה הפרויקט ומזהה המודל.

דוגמה ל-JSON:
{
  "displayName": "smart_compose_assist",
  "humanAgentAssistantConfig": {
    "humanAgentSuggestionConfig": {
      "featureConfigs": [
        {
          "suggestionFeature": {
            "type": "SMART_COMPOSE"
          },
          "queryConfig": {
            "documentQuerySource": {
              "documents": "projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID/documents/DOCUMENT_ID"
            },
           "maxResults": "1"
          },
         "conversationModelConfig": {
           "model": "projects/PROJECT_ID/conversationModels/MODEL_ID"
         }
        }
      ]
    }
  }
}

התשובה מכילה את המזהה החדש של פרופיל השיחה.

ניהול שיחות בזמן ריצה

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

יצירת שיחה

כדי ליצור שיחה, מבצעים קריאה ל-method‏ create במשאב Conversation.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט בענן
  • LOCATION_ID: מזהה המיקום
  • CONVERSATION_PROFILE_ID: המזהה שקיבלתם כשנוצר פרופיל השיחה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations

תוכן בקשת JSON:

{
  "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID",
  "lifecycleState": "IN_PROGRESS",
  "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2018-11-05T21:05:45.622Z"
}

פלח הנתיב אחרי conversations מכיל את מזהה השיחה החדש.

Python

כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

def create_conversation(project_id, conversation_profile_id):
    """Creates a conversation with given values

    Args:
        project_id:  The GCP project linked with the conversation.
        conversation_profile_id: The conversation profile id used to create
        conversation."""

    client = dialogflow.ConversationsClient()
    conversation_profile_client = dialogflow.ConversationProfilesClient()
    project_path = client.common_project_path(project_id)
    conversation_profile_path = conversation_profile_client.conversation_profile_path(
        project_id, conversation_profile_id
    )
    conversation = {"conversation_profile": conversation_profile_path}
    response = client.create_conversation(
        parent=project_path, conversation=conversation
    )

    print("Life Cycle State: {}".format(response.lifecycle_state))
    print("Conversation Profile Name: {}".format(response.conversation_profile))
    print("Name: {}".format(response.name))
    return response

יצירת משתתף שהוא משתמש קצה

כדי לראות הצעות, צריך להוסיף לשיחה משתתפים שהם גם משתמשי קצה וגם נציגים אנושיים. כדי ליצור משתתף שהוא משתמש קצה, צריך לבצע קריאה ל-method‏ create במשאב Participant. מזינים את מזהה השיחה ואת END_USER בשדה role.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט בענן
  • LOCATION_ID: מזהה המיקום
  • CONVERSATION_ID: מזהה השיחה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants

תוכן בקשת JSON:

{
  "role": "END_USER",
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID",
  "role": "END_USER"
}

פלח הנתיב אחרי participants מכיל את מזהה המשתתף החדש של משתמש הקצה.

Python

כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

יצירת משתתף שהוא סוכן אנושי

כדי ליצור משתתף שהוא נציג שירות אנושי, צריך להפעיל את method‏ create במשאב Participant. מזינים את מזהה השיחה ואת HUMAN_AGENT בשדה role.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט בענן
  • LOCATION_ID: מזהה המיקום
  • CONVERSATION_ID: מזהה השיחה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants

תוכן בקשת JSON:

{
  "role": "HUMAN_AGENT",
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID",
  "role": "HUMAN_AGENT"
}

פלח הנתיב אחרי participants מכיל את מזהה המשתתף החדש של הסוכן האנושי.

Python

כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

הוספה וניתוח של הודעה מהסוכן האנושי

בכל פעם שאחד מהמשתתפים מקליד הודעה בשיחה, צריך לשלוח את ההודעה הזו ל-API לעיבוד. ההצעות של Agent Assist מבוססות על ניתוח של הודעות מנציגים אנושיים ומשתמשי קצה. כדי להוסיף ולנתח הודעה של נציג שירות אנושי בשיחה, קוראים לשיטה analyzeContent במשאב Participant. צריך לספק את מזהה השיחה ואת מזהה המשתתף של הנציג האנושי.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב-GCP
  • CONVERSATION_ID: מזהה השיחה
  • PARTICIPANT_ID: מזהה המשתתף של הסוכן האנושי

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

תוכן בקשת JSON:

{
  "textInput": {
    "text": "How may I help you?",
    "languageCode": "en-US"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "How may I help you?",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "HUMAN_AGENT",
    "createTime": "2020-02-13T00:01:30.683Z"
  },
  "humanAgentSuggestionResults": [
    {
      "suggestSmartRepliesResponse": {
      "smartReplyAnswers": [
          {
            "reply": "I am here to help you.",
            "confidence": 0.5,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_1"
          },
          {
            "reply": "Sorry for the wait, we have a high volume of chats right now.",
            "confidence": 0.3,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_2"
          },
          {
            "reply": "Thank you for contacting us!",
            "confidence": 0.1,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_3"
          }
        ]
      }
    }
  ]
}

Python

כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

הוספה וניתוח של הודעה ממשתמש קצה

כדי להוסיף ולנתח הודעה של משתמש קצה בשיחה, צריך לבצע קריאה ל-method‏ analyzeContent במשאב Participant. מציינים את מזהה השיחה ואת מזהה המשתתף של משתמש הקצה.

התשובה מכילה מזהה הודעה. ההצעות יופיעו בשלב הבא.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב-GCP
  • CONVERSATION_ID: מזהה השיחה
  • PARTICIPANT_ID: מזהה המשתתף של משתמש הקצה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

תוכן בקשת JSON:

{
  "textInput": {
    "text": "I want to reserve a room.",
    "languageCode": "en-US"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "I want to reserve a room.",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "END_USER",
    "createTime": "2020-02-13T00:07:35.925Z"
  },
  "humanAgentSuggestionResults": [
    {
      "suggestSmartRepliesResponse": {
      "smartReplyAnswers": [
          {
            "reply": "Where would you like to reserve a room?",
            "confidence": 0.5,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_1"
          },
          {
            "reply": "What type of rooms would you like to reserve?",
            "confidence": 0.3,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_2"
          },
          {
            "reply": "How long do you want to stay?",
            "confidence": 0.1,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_3"
          }
        ]
      }
    }
  ]
}

Python

כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

קבלת הצעה (אופציונלי)

אפשר להשבית את ההצעות בכל שלב. אפשר גם לציין מזהה הודעה כדי לקבל הצעות שמבוססות על ההודעה הזו. אם לא מגדירים את השדה הזה, ההצעות מבוססות כברירת מחדל על ההודעה האחרונה של אחד מהמשתתפים. כדי לקבל הצעות, צריך להפעיל את ה-method‏ suggestSmartReplies במשאב Suggestion. אפשר לציין את מזהה השיחה, מזהה המשתתף של הנציג האנושי ומזהה ההודעה של אחד מהמשתתפים (אופציונלי).

התשובה מכילה הצעות לתשובות מהירות עבור הנציג האנושי.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב-GCP
  • CONVERSATION_ID: מזהה השיחה
  • PARTICIPANT_ID: מזהה המשתתף של משתמש הקצה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

תוכן בקשת JSON:

{
  "textInput": {
    "text": "I want to reserve a room.",
    "languageCode": "en-US"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "I want to reserve a room.",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "END_USER",
    "createTime": "2020-02-13T00:07:35.925Z"
  },
  "humanAgentSuggestionResults": [
    {
      "suggestSmartRepliesResponse": {
      "smartReplyAnswers": [
          {
            "reply": "Where would you like to reserve a room?",
            "confidence": 0.5,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_1"
          },
          {
            "reply": "What type of rooms would you like to reserve?",
            "confidence": 0.3,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_2"
          },
          {
            "reply": "How long do you want to stay?",
            "confidence": 0.1,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_3"
          }
        ]
      }
    }
  ]
}

Python

כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

סיום השיחה

כדי לסיים את השיחה, מבצעים קריאה ל-method‏ complete במשאב conversations. צריך לציין את מזהה השיחה.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב-GCP
  • CONVERSATION_ID: המזהה שקיבלתם כשפתחתם את השיחה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID:complete

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID",
  "lifecycleState": "COMPLETED",
  "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2018-11-05T21:05:45.622Z",
  "endTime": "2018-11-06T03:50:26.930Z"
}

Python

כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

def complete_conversation(project_id, conversation_id):
    """Completes the specified conversation. Finished conversations are purged from the database after 30 days.

    Args:
        project_id: The GCP project linked with the conversation.
        conversation_id: Id of the conversation."""

    client = dialogflow.ConversationsClient()
    conversation_path = client.conversation_path(project_id, conversation_id)
    conversation = client.complete_conversation(name=conversation_path)
    print("Completed Conversation.")
    print("Life Cycle State: {}".format(conversation.lifecycle_state))
    print("Conversation Profile Name: {}".format(conversation.conversation_profile))
    print("Name: {}".format(conversation.name))
    return conversation