התכונה 'עזרה בשאלות נפוצות' מציעה תשובות רלוונטיות לשאלות נפוצות לנציגים אנושיים במהלך שיחה עם משתמש קצה. אפשר להשתמש בתכונה הזו כדי לעזור לנציג אנושי לענות על שאלות נפוצות של משתמשי קצה בזמן שהנציג האנושי ומשתמש הקצה נמצאים בשיחה.
Agent Assist עוקב אחרי השיחה ומנתח מסמכי שאלות נפוצות שמאוחסנים במאגרי ידע כדי להציע תשובות לשאלות של משתמשי הקצה. סוכן אנושי יכול לבדוק את ההצעות האלה בזמן שהשיחה מתנהלת, ולהחליט אילו הצעות לשתף עם משתמש הקצה.
במאמר הזה מוסבר איך להשתמש ב-API כדי להטמיע את התכונה 'עזרה בכתיבת שאלות נפוצות' ולקבל הצעות מהתכונה הזו במהלך זמן הריצה. יש לכם אפשרות להשתמש במסוף של Agent Assist כדי לבדוק את תוצאות ההצעות למאמרים בזמן העיצוב, אבל אתם צריכים לקרוא ל-API ישירות בזמן הריצה. פרטים על בדיקת הביצועים של התכונה באמצעות מסוף Agent Assist זמינים בקטע ההדרכות.
לפני שמתחילים
לפני שמתחילים לקרוא את המדריך הזה, צריך לבצע את הפעולות הבאות:
- מפעילים את Dialogflow API בפרויקטGoogle Cloud .
הגדרת פרופיל שיחה
כדי לקבל הצעות מ-Agent Assist, צריך ליצור מאגר מידע שמכיל את המסמכים שהועלו ולהגדיר פרופיל שיחה. אפשר גם לבצע את הפעולות האלה באמצעות מסוף Agent Assist אם אתם מעדיפים לא להפעיל את ה-API ישירות.
יצירת מאגר ידע
לפני שמתחילים להעלות מסמכים, צריך ליצור מאגר ידע שבו יאוחסנו המסמכים. כדי ליצור מאגר ידע, צריך לבצע קריאה ל-method create בסוג KnowledgeBase.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב-GCP
- KNOWLEDGE_BASE_DISPLAY_NAME: השם הרצוי של מאגר הידע
ה-method של ה-HTTP וכתובת ה-URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/knowledgeBases
תוכן בקשת JSON:
{
"displayName": "KNOWLEDGE_BASE_DISPLAY_NAME"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_ID/knowledgeBases/NDA4MTM4NzE2MjMwNDUxMjAwMA",
"displayName": "KNOWLEDGE_BASE_DISPLAY_NAME"
}
פלח הנתיב אחרי knowledgeBases מכיל את המזהה החדש של מאגר הידע.
Python
כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
יצירת מסמך ידע
עכשיו אפשר להוסיף מסמכים למאגר הידע. כדי ליצור מסמך במאגר הידע, מבצעים קריאה ל-method create בסוג Document.
מגדירים את KnowledgeType לערך FAQ. בדוגמה הזו נעשה שימוש במסמך Cloud Storage FAQ שהועלה לקטגוריה Cloud Storage ששותפה באופן ציבורי. כשמגדירים את התכונה 'הצעות למאמרים' במערכת שלכם, המסמכים צריכים להיות באחד מהפורמטים הבאים. מידע נוסף על שיטות מומלצות ליצירת מסמכים זמין במאמרי העזרה בנושא מסמכי ידע.
מסמך השאלות הנפוצות יכול להיות באחד משלושת הפורמטים הבאים:
- כתובת URL ציבורית.
- נתיב ב-Cloud Storage לקובץ
csv. - קובץ
csv(שתכללו בבקשת ה-API).
אם המסמך הוא בפורמט csv, הוא צריך לכלול שתי עמודות: השאלות הנפוצות צריכות להיות בעמודה הראשונה, והתשובות לכל שאלה צריכות להיות בעמודה השנייה. כל שאלה ותשובה שקשורות אליה נקראות צמד שאלות ותשובות. חשוב לוודא שהקובץ csv לא מכיל שורת כותרת. אם המסמך הוא כתובת URL ציבורית, הוא צריך להיות דף שאלות נפוצות שכולל כמה זוגות של שאלות ותשובות.
מידע על שיטות מומלצות זמין במסמכי הידע.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב-GCP
- KNOWLEDGE_BASE_ID: מזהה מאגר הידע שהוחזר מהבקשה הקודמת
- DOCUMENT_DISPLAY_NAME: השם הרצוי של מסמך הידע
ה-method של ה-HTTP וכתובת ה-URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID/documents
תוכן בקשת JSON:
{
"displayName": "DOCUMENT_DISPLAY_NAME",
"mimeType": "text/html",
"knowledgeTypes": "FAQ",
"contentUri": "https://cloud.google.com/storage/docs/faq"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_ID/operations/ks-add_document-MzA5NTY2MTc5Mzg2Mzc5NDY4OA"
}
התגובה היא פעולה ממושכת, שאפשר לשלוח לה בקשות כדי לבדוק אם היא הסתיימה.
Python
כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
יצירת פרופיל שיחה
פרופיל שיחה מגדיר קבוצה של פרמטרים ששולטים בהצעות שמוצגות לסוכן במהלך שיחה. בשלבים הבאים יוצרים ConversationProfile עם אובייקט HumanAgentAssistantConfig. אפשר גם לבצע את הפעולות האלה באמצעות מסוף Agent Assist אם אתם מעדיפים לא לקרוא ל-API ישירות.
ההגדרה 'הצעות מוטמעות' מופעלת כברירת מחדל. אפשר גם להפעיל התראות של Cloud Pub/Sub כשמגדירים את פרופיל השיחה.
REST
כדי ליצור פרופיל שיחה, מבצעים קריאה ל-methodcreate במשאב ConversationProfile.
noSmallTalk: אם true, ההצעות לא יופעלו אחרי הודעות של שיחה קלילה (כמו 'היי', 'מה שלומך' וכו'). אם false, ההצעות יופעלו אחרי הודעות של שיחה קלילה.
onlyEndUser: אם הערך הוא true, ההצעות יופעלו רק אחרי הודעות של משתמשי קצה. אם false, ההצעות יופעלו אחרי הודעות של משתמשי קצה ושל סוכנים אנושיים.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב-GCP
- KNOWLEDGE_BASE_ID: מזהה מאגר הידע
ה-method של ה-HTTP וכתובת ה-URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversationProfiles
תוכן בקשת JSON:
{
"displayName": "my-conversation-profile-display-name",
"humanAgentAssistantConfig": {
"humanAgentSuggestionConfig": {
"featureConfigs": [
{
"suggestionFeature": {
"type": "FAQ"
},
"queryConfig": {
"knowledgeBaseQuerySource": {
"knowledgeBases": ["projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID"]
}
},
"enableEventBasedSuggestion": false,
"enableInlineSuggestion": true,
"SuggestionTriggerSettings": {
"noSmallTalk": true,
"onlyEndUser": true,
}
}
]
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
"displayName": "my-conversation-profile-display-name",
"humanAgentAssistantConfig": {
...
}
}
פלח הנתיב אחרי conversationProfiles מכיל את המזהה החדש של פרופיל השיחה.
Python
כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
(אופציונלי) הגדרת הגדרות אבטחה
יש לכם אפשרות להגדיר פרמטרים של אבטחה כדי לטפל בבעיות כמו צנזורה של נתונים ושמירת נתונים. כדי לעשות את זה, צריך ליצור משאב SecuritySettings ולקשר אותו לפרופיל שיחה באמצעות השדה securitySettings.
הגדרות האבטחה שמוסיפים לפרופיל שיחה משפיעות רק על ההתנהגות של הודעות טקסט ב-Agent Assist. ההתנהגות של היסטוריית האינטראקציות ב-Dialogflow נקבעת על ידי הגדרות האבטחה של Dialogflow, שאפשר להגדיר באמצעות מסוף Dialogflow CX.
ניהול שיחות בזמן ריצה
יצירת שיחה
כשמתחיל דיאלוג בין משתמש קצה לבין נציג אנושי או וירטואלי, נוצרת שיחה. כדי לראות הצעות, צריך גם ליצור משתתף שהוא משתמש קצה ומשתתף שהוא נציג שירות אנושי, ולהוסיף אותם לשיחה. בקטעים הבאים מפורט תהליך ההגדרה.
קודם צריך ליצור שיחה:
REST
כדי ליצור שיחה, מבצעים קריאה ל-methodcreate במשאב Conversation.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- 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. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
יצירת משתתף שהוא משתמש קצה
כדי לראות הצעות, צריך להוסיף לשיחה גם משתמשי קצה וגם נציגים אנושיים. קודם מוסיפים את המשתמש הסופי לשיחה:
REST
כדי ליצור משתתף שהוא משתמש קצה, צריך להפעיל את method create במשאב Participant.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- 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. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
יצירת משתתף שהוא נציג שירות
הוספת נציג אנושי לשיחה:
REST
כדי ליצור משתתף שהוא נציג שירות אנושי, צריך להפעיל את method create במשאב Participant.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- 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. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
הוספה וניתוח של הודעה מהסוכן האנושי
בכל פעם שאחד מהמשתתפים מקליד הודעה בשיחה, צריך לשלוח את ההודעה הזו ל-API לעיבוד. ההצעות של Agent Assist מבוססות על ניתוח של הודעות מנציגים אנושיים וממשתמשי קצה. בדוגמה הבאה, הנציג האנושי מתחיל את השיחה בשאלה "איך אוכל לעזור לך?". עדיין לא מוחזרות הצעות בתשובה.
REST
כדי להוסיף הודעה מסוכן אנושי לשיחה ולנתח אותה, צריך לבצע קריאה ל-method analyzeContent במשאב Participant.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- 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": [
{
"suggestArticlesResponse": {
"latestMessage": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
"contextSize": 1
}
}
]
}
}
]
}
Python
כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
הוספת הודעה ממשתמש הקצה וקבלת הצעות
בתגובה לסוכן, משתמש הקצה שואל "איך נרשמים?". התגובה מכילה רשימה של תשובות מוצעות לשאלה של משתמש הקצה, וגם ציון רמת סמך לכל תשובה. כל התשובות נלקחו ממסמך הידע של השאלות הנפוצות שהוספנו קודם במדריך הזה. סף המהימנות מתייחס לרמת המהימנות של המודל לגבי הרלוונטיות של כל הצעה לשאלות נפוצות לבקשה של הנציג. ערך מהימנות גבוה יותר מגדיל את הסיכוי לקבל תשובות רלוונטיות, אבל יכול לגרום לכך שלא יוחזרו תשובות או שיוחזרו פחות תשובות אם אף אפשרות זמינה לא עומדת בערך הסף הגבוה. מומלץ להגדיר ערך התחלתי של ציון מהימנות של 0.4. אפשר לשנות את הערך הזה בהמשך כדי לשפר את התוצאות, אם צריך.
התשובה כוללת גם את source, מסמך הידע שממנו התשובה נלקחה. צריך לספק את התשובות המוצעות לנציג שירות אנושי, שיכול לבחור אם לספק את המידע הזה למשתמש הקצה.
REST
כדי להוסיף ולנתח הודעה של משתמש קצה בשיחה, צריך לבצע קריאה ל-method analyzeContent במשאב Participant.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- 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 do I sign up?",
"languageCode": "en-US"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"message": {
"name": "projects/PROJECT_ID/conversations/fiiJBeHnQIa6Zx_DUKNlEg/messages/Rjv8ErKYS_yIqVR9SW4CpA",
"content": "How may I help you?",
"languageCode": "en-US",
"participant": "PaZQyeiTQgCOyliHkZjs0Q",
"participantRole": "HUMAN_AGENT",
"createTime": "1970-01-01T00:00:00Z"
},
"humanAgentSuggestionResults": [
{
"suggestFaqAnswersResponse": {
"faqAnswers": [
{
"answer": "Sign up for Cloud Storage by turning on the Cloud Storage service in the Google Cloud Platform Console.",
"confidence": 0.07266401,
"question": "How do I sign up?",
"source": "projects/PROJECT_ID/knowledgeBases/NjQ2MzI1MDQwNTQ2MjYzODU5Mg/documents/NTMxOTA4MTAxMzQxMjg4ODU3Ng",
"metadata": {
"document_display_name": "my-document-display-name"
},
"answerRecord": "projects/PROJECT_ID/answerRecords/MTU0MzE0NDQwOTAwNzEyODU3NjA"
},
{
"answer": "Consider storing your data in a multi-regional or dual-regional bucket location if high availability is a top requirement. This ensures that your data is stored in at least two geographically separated regions, providing continued availability even in the rare event of a region-wide outage, including ones caused by natural disasters. All data, regardless of storage class, is stored redundantly across regions in these types of locations, which allows you to use storage lifecycle management without giving up high availability.",
"confidence": 0.06937904,
"question": "How can I maximize the availability of my data?",
"source": "projects/PROJECT_ID/knowledgeBases/NjQ2MzI1MDQwNTQ2MjYzODU5Mg/documents/NTMxOTA4MTAxMzQxMjg4ODU3Ng",
"metadata": {
"document_display_name": "my-document-display-name"
},
"answerRecord": "projects/PROJECT_ID/answerRecords/MzkwMjIyOTA0NDAwMjgxNjAwMA"
},
{
"answer": "From the Cloud Storage documentation click \"Send feedback\" near the top right of the page. This will open a feedback form. Your comments will be reviewed by the Cloud Storage team.",
"confidence": 0.069021806,
"question": "How do I give product feedback?",
"source": "projects/PROJECT_ID/knowledgeBases/NjQ2MzI1MDQwNTQ2MjYzODU5Mg/documents/NTMxOTA4MTAxMzQxMjg4ODU3Ng",
"metadata": {
"document_display_name": "my-document-display-name"
},
"answerRecord": "projects/PROJECT_ID/answerRecords/MTMxMjU2MDEwODA4NTc1OTE4MDg"
},
{
"answer": "Read the Pricing page for detailed information on pricing, including how Cloud Storage calculates bandwidth and storage usage.",
"confidence": 0.06681696,
"question": "Where can I find pricing information?",
"source": "projects/PROJECT_ID/knowledgeBases/NjQ2MzI1MDQwNTQ2MjYzODU5Mg/documents/NTMxOTA4MTAxMzQxMjg4ODU3Ng",
"metadata": {
"document_display_name": "my-document-display-name"
},
"answerRecord": "projects/PROJECT_ID/answerRecords/ODUxMzkxNTA2MjQzMDIwMzkwNA"
},
{
"answer": "Use Object Versioning. The Object Versioning feature keeps an archived version of an object whenever you overwrite or delete the live version. If you accidentally delete an object, you can copy an archived version of it back to the live version. It's recommended that you use Object Versioning in conjunction with Object Lifecycle Management. Doing so ensures that you don't have multiple, unnecessary copies of an object, which are each subject to storage costs. Caution: Object Versioning does not protect your data if you delete the entire bucket. As an alternative, use object holds. When you place an object hold on an object, it cannot be deleted or overwritten.",
"confidence": 0.06453417,
"question": "How do I protect myself from accidental data deletion?",
"source": "projects/PROJECT_ID/knowledgeBases/NjQ2MzI1MDQwNTQ2MjYzODU5Mg/documents/NTMxOTA4MTAxMzQxMjg4ODU3Ng",
"metadata": {
"document_display_name": "my-document-display-name"
},
"answerRecord": "projects/PROJECT_ID/answerRecords/MTc3MzcyODcwOTkyODQ5Nzk3MTI"
},
{
"answer": "You can share an individual object with a user or group by adding an entry to that object's access control list (ACL) that grants the user or group READ permission. For step-by-step instructions, see Changing ACLs.",
"confidence": 0.06336816,
"question": "I want to let someone download an individual object. How do I do that?",
"source": "projects/PROJECT_ID/knowledgeBases/NjQ2MzI1MDQwNTQ2MjYzODU5Mg/documents/NTMxOTA4MTAxMzQxMjg4ODU3Ng",
"metadata": {
"document_display_name": "my-document-display-name"
},
"answerRecord": "projects/PROJECT_ID/answerRecords/MTAxOTkyNTI4MjQ4NTY5ODU2MA"
},
{
"answer": "You can simply install and use the Google Cloud CLI to download the data, even without a Google account. You do not need to activate Cloud Storage or turn on billing for this purpose. You also do not need to create credentials or authenticate to Cloud Storage.",
"confidence": 0.061990723,
"question": "I am just trying to download or access some data that is available to the public. How can I do that?",
"source": "projects/PROJECT_ID/knowledgeBases/NjQ2MzI1MDQwNTQ2MjYzODU5Mg/documents/NTMxOTA4MTAxMzQxMjg4ODU3Ng",
"metadata": {
"document_display_name": "my-document-display-name"
},
"answerRecord": "projects/PROJECT_ID/answerRecords/MTAyNDMyOTczMTkzNDA0NzQzNjg"
},
{
"answer": "Certain types of content are not allowed on this service; please refer to the Terms of Services and Platform Policies for details. If you believe a piece of content is in violation of our policies, report it here (select See more products, then Google Cloud Storage & Cloud Bigtable).",
"confidence": 0.060459033,
"question": "I believe some content hosted on your service is inappropriate, how do I report it?",
"source": "projects/PROJECT_ID/knowledgeBases/NjQ2MzI1MDQwNTQ2MjYzODU5Mg/documents/NTMxOTA4MTAxMzQxMjg4ODU3Ng",
"metadata": {
"document_display_name": "my-document-display-name"
},
"answerRecord": "projects/PROJECT_ID/answerRecords/NTYzMTYxMTMwMDkxMzA4NjQ2NA"
},
{
"answer": "For most common Cloud Storage operations, you only need to specify the relevant bucket's name, not the project associated with the bucket. In general, you only need to specify a project identifier when creating a bucket or listing buckets in a project. For more information, see When to specify a project. To find which project contains a specific bucket: If you are searching over a moderate number of projects and buckets, use the Google Cloud Platform Console, select each project, and view the buckets it contains. Otherwise, go to the storage.bucket.get page in the API Explorer and enter the bucket's name in the bucket field. When you click Authorize and Execute, the associated project number appears as part of the response. To get the project name, use the project number in the following terminal command: gcloud projects list | grep [PROJECT_NUMBER]",
"confidence": 0.05914715,
"question": "I created a bucket, but don't remember which project I created it in. How can I find it?",
"source": "projects/PROJECT_ID/knowledgeBases/NjQ2MzI1MDQwNTQ2MjYzODU5Mg/documents/NTMxOTA4MTAxMzQxMjg4ODU3Ng",
"metadata": {
"document_display_name": "my-document-display-name"
},
"answerRecord": "projects/PROJECT_ID/answerRecords/MTQ4NTQ5ODMzMzc3Njc4NjIyNzI"
},
{
"answer": "Cloud Storage is designed for 99.999999999% (11 9's) annual durability, which is appropriate for even primary storage and business-critical applications. This high durability level is achieved through erasure coding that stores data pieces redundantly across multiple devices located in multiple availability zones. Objects written to Cloud Storage must be redundantly stored in at least two different availability zones before the write is acknowledged as successful. Checksums are stored and regularly revalidated to proactively verify that the data integrity of all data at rest as well as to detect corruption of data in transit. If required, corrections are automatically made using redundant data. Customers can optionally enable object versioning to add protection against accidental deletion.",
"confidence": 0.05035359,
"question": "How durable is my data in Cloud Storage?",
"source": "projects/PROJECT_ID/knowledgeBases/NjQ2MzI1MDQwNTQ2MjYzODU5Mg/documents/NTMxOTA4MTAxMzQxMjg4ODU3Ng",
"metadata": {
"document_display_name": "my-document-display-name"
},
"answerRecord": "projects/PROJECT_ID/answerRecords/MzMyNTc2ODI5MTY5OTM5MjUxMg"
}
],
"latestMessage": "projects/PROJECT_ID/conversations/fiiJBeHnQIa6Zx_DUKNlEg/messages/Rjv8ErKYS_yIqVR9SW4CpA",
"contextSize": 1
}
}
]
}Python
כדי לבצע אימות ב-Agent Assist, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
השלמת השיחה
בסיום השיחה, משתמשים ב-API כדי להשלים את השיחה.
REST
כדי לסיים את השיחה, מבצעים קריאה ל-methodcomplete במשאב conversations.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- 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. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
אפשרויות לבקשת API
בקטעים הקודמים הוסבר איך ליצור ConversationProfile כדי לקבל הצעות. בקטעים הבאים מפורטות כמה פונקציות אופציונליות שאפשר להטמיע במהלך שיחה.
התראות על הצעות ללוח הזמנים ב-Pub/Sub
בקטעים הקודמים, נוצר ConversationProfile רק עם עוזר אנושי. במהלך השיחה, היה צריך להתקשר ל-API כדי לקבל הצעות אחרי שכל הודעה נוספה לשיחה. אם אתם מעדיפים לקבל התראות על אירועים לגבי הצעות, אתם יכולים להגדיר את השדה notificationConfig כשאתם יוצרים את פרופיל השיחה. באפשרות הזו נעשה שימוש ב-Cloud Pub/Sub כדי לשלוח לאפליקציה התראות על הצעות במהלך השיחה, כשהצעות חדשות זמינות.