بدء المحادثة

في المحادثات مع وكلاء ميزة "الرسائل التجارية"، تحدّد رسالة الترحيب أسلوب التفاعل. كما تُطلع المستخدمين على الإجراءات التي يمكن للوكيل تنفيذها، ما يؤثر في أسئلة المستخدم وتوقّعاته.

يرسل الوكيل رسالة ترحيب في كل مرة يفتح فيها المستخدم محادثة. يمكن للوكيل أيضًا عرض أفكار لبدء المحادثات لتوجيه المستخدمين إلى مسارات معروفة أو متكرّرة.

إذا حاول أحد المستخدمين بدء محادثة خارج ساعات عمل الوكيل، يعرض الوكيل رسالة عدم توفّر الخدمة يمكنك استخدامها لمشاركة قنوات بديلة أو اقتراح خطوات تالية. من خلال الاستفادة من هذه الإعدادات، يمكنك زيادة موثوقية الوكيل وسهولة استخدامه.

أفكار لبدء المحادثات

الإعدادات على مستوى الوكيل والموقع الجغرافي

يمكنك تحديد إعدادات المحادثة على مستوى الوكيل أو الموقع الجغرافي.

  • على مستوى الوكيل: تنطبق إعدادات المحادثة هذه على جميع المحادثات مع الوكيل على جميع نقاط الدخول.

    قد تبدأ رسالة الترحيب على مستوى الوكيل بعبارة "شكرًا على التواصل مع Bridgepoint Runners..." يمكن أن تركّز أفكار بدء المحادثات على الإجراءات أو المعلومات على مستوى الشركة.

  • على مستوى الموقع الجغرافي: تلغي هذه الإعدادات الإعدادات على مستوى الوكيل ولا تنطبق إلا على المحادثات مع هذا الموقع الجغرافي من خلال نقاط الدخول PLACESHEET وMAPS .

    قد تبدأ رسالة الترحيب على مستوى الموقع الجغرافي بعبارة "شكرًا على التواصل مع Bridgepoint Runners في Amphitheatre Pkwy..." يمكن أن تركّز أفكار بدء المحادثات على المهام أو المعلومات المستندة إلى الموقع الجغرافي. قد تذكر رسالة عدم توفّر الخدمة الموعد التالي لفتح الموقع الجغرافي.

اللغات

يمكن للوكلاء والمواقع الجغرافية تحديد إعدادات منفصلة لأي لغة يتيحونها. على سبيل المثال، قد يحدّد الوكيل رسالة ترحيب باللغة الإنجليزية للغة "en" ورسالة الترحيب نفسها باللغة الإسبانية للغة "es". تحدّد ميزة "الرسائل التجارية" تطابقًا بين اللغة التي أبلغ عنها جهاز المستخدم واللغات التي تم ضبط إعدادات المحادثة لها لدى الوكيل أو الموقع الجغرافي.

يتم الإبلاغ عن هذا التطابق في اللغة في حقل resolvedLocale لكل رسالة. يمكنك تحديد defaultLocale للوكيل أو الموقع الجغرافي، ما يؤثر في مطابقة اللغة التي تم تحديدها. الاطّلاع على مقالة الترجمة و اللغات.

تستخدم ميزة "الرسائل التجارية" اللغة التي تم تحديدها لتحديد إعدادات المحادثة التي سيتم تطبيقها.

رسالة الترحيب

أول رسالة في محادثة بين وكيل ومستخدم هي رسالة الترحيب من الوكيل. تظهر رسالة الترحيب تلقائيًا بعد أن يبدأ المستخدم محادثة جديدة. تحدّد رسالة الترحيب الـ جيدة توقّعات المستخدم بشأن التفاعل مع الوكيل. لتعديل رسالة ترحيب ، اطّلِع على مقالة تعديل إعدادات المحادثة.

أفكار لبدء المحادثات

في حين أنّ رسالة الترحيب الجيدة تغطي وظائف الوكيل على مستوى عالٍ و تكون مفتوحة، فإنّ أفكار بدء المحادثات الجيدة توجه المستخدمين إلى الأسئلة المتكرّرة أو الوظائف المعروفة.

تظهر أفكار بدء المحادثات كردود منسقة بشكل عمودي وتظهر بعد رسالة الترحيب مباشرةً. عندما ينقر المستخدم على فكرة لبدء المحادثة، يتلقّى الوكيل محتوًى وبيانات معاودة الاتصال محدّدة مسبقًا، والتي تضبطها عند تحديد الفكرة.

إذا كان الوكيل يتيح وظائف تلقائية لطلبات معيّنة، قد يتم ربط أفكار بدء المحادثات بهذه الطلبات، ما يتيح لك الاعتماد على الإدخالات المعروفة للأتمتة وإرسال أسئلة المستخدمين الحرة إلى وكلاء الدعم المباشر المستعدين للإجابة.

يمكن أن يتضمّن الوكيل 5 أفكار لبدء المحادثات بحد أقصى، ويمكن أن تتضمّن كل فكرة 35 حرفًا بحد أقصى.

لإضافة أفكار لبدء المحادثات أو تعديلها، اطّلِع على مقالة تعديل إعدادات المحادثة.

رسائل عدم توفّر الخدمة

عندما يبدأ المستخدم محادثة مع وكيل خارج ساعات عمله (كما هو محدّد في MessagingAvailability)، يتلقّى رسالة عدم توفّر الخدمة من الوكيل. لا يتم أخذ توفّر الممثّل البشري في الاعتبار إلا عند تفعيل رسالة عدم توفّر الخدمة. يرسل الوكلاء الذين لديهم ممثّلو برامج تتبُّع فقط رسالة ترحيب دائمًا. رسالة عدم توفّر الخدمة الجيدة

  • توضّح سبب عدم توفّر الوكيل
  • توجّه المستخدم بشأن الخطوات التالية المناسبة أو قنوات التواصل البديلة
  • تتطابق مع أسلوب رسالة الترحيب وأفكار بدء المحادثات

رسالة عدم توفّر الخدمة السيئة

"عذرًا، نحن مغلقون."

رسالة عدم توفّر الخدمة الجيدة

"نحن مغلقون الآن، ولكننا سنكون متاحين مرة أخرى غدًا في الساعة 8 صباحًا. إذا كنت بحاجة إلى مساعدة عاجلة، يُرجى التواصل مع فريق الدعم على الرقم ‎+12223334444 أو على عنوان البريد الإلكتروني support@gtb.com."

لتعديل رسالة عدم توفّر الخدمة، اطّلِع على مقالة تعديل إعدادات المحادثة.

تعديل إعدادات المحادثة

لإدارة رسالة ترحيب أو أفكار بدء المحادثات، عليك إرسال طلب PATCH باستخدام Business Communications API لتعديل حقل conversationalSettings للوكيل أو الموقع الجغرافي.

عند تعديل الحقل conversationalSettings، يجب تضمين قيم لـ جميع الحقول في الـ ConversationalSetting عنصر. تؤدي طلبات التعديل إلى الكتابة فوق محتوى جميع الحقول التي تعدّلها، بما في ذلك أي حقول فرعية. على سبيل المثال، إذا أرسلت طلبًا لتعديل رسالة ترحيب ولكن لم تضمّن أفكارًا لبدء المحادثات، يزيل الطلب أي أفكار سابقة لبدء المحادثات.

المتطلبات الأساسية

قبل تعديل إعدادات المحادثة، تحتاج إلى ما يلي:

  • مسار مفتاح حساب الخدمة لمشروعك على Google Cloud Platform على جهاز التطوير
  • اللغة التي تريد تعديل الإعدادات لها
  • بالنسبة إلى الإعدادات على مستوى الوكيل، name الوكيل (على سبيل المثال، "brands/12345/agents/67890")

    إذا كنت لا تعرف name الوكيل، اطّلِع على مقالة عرض قائمة بجميع الوكلاء لـ علامة تجارية.

  • بالنسبة إلى الإعدادات على مستوى الموقع الجغرافي، name الموقع الجغرافي (على سبيل المثال، "brands/12345/locations/67890")

    إذا كنت لا تعرف name الموقع الجغرافي، اطّلِع على مقالة عرض قائمة بجميع المواقع الجغرافية لعلامة تجارية.

  • اللغة التي تريد تعديلها، كرمز لغة مؤلف من حرفَين بتنسيق ISO 639-1 language code

  • رسالة الترحيب الجديدة

  • عنوان URL لسياسة الخصوصية

  • (اختياري) نص أفكار بدء المحادثات

  • (اختياري) بيانات معاودة الاتصال لأفكار بدء المحادثات

  • (اختياري) رسالة عدم توفّر الخدمة الجديدة

إذا كنت لا تعرف القيم الحالية لـ conversationalSettings، اطّلِع على الحصول على معلومات الوكيل والحصول على معلومات الموقع الجغرافي.

إرسال طلب التعديل

لتعديل الوكيل أو الموقع الجغرافي، نفِّذ الأمر التالي. استبدِل المتغيّرات بالقيم التي حدّدتها في المتطلبات الأساسية.

إذا كنت لا تريد أفكارًا لبدء المحادثات، احذف conversationStarters وجميع حقوله الفرعية.

الإعدادات على مستوى الوكيل

cURL

# This code updates the conversational settings of a Business Messages agent.
# Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/brands.agents/patch

# Replace the __BRAND_ID__, __AGENT_ID__ and __LOCALE__
# Make sure a service account key file exists at ./service_account_key.json

curl -X PATCH \
"https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__?updateMask=businessMessagesAgent.conversationalSettings.__LOCALE__" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/business-communications" \
-H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \
-d '{
  "businessMessagesAgent": {
    "conversationalSettings": {
      "__LOCALE__": {
        "welcomeMessage": {
          "text": "My first welcome message"
        },
        "offlineMessage": {
          "text": "My first offline message"
        },
        "privacyPolicy": {
          "url": "https://www.your-company-website.com/privacy"
        },
        "conversationStarters": [
          {
            "suggestion": {
              "reply": {
                "text": "Suggestion 1",
                "postbackData": "post_back_suggestion_1"
              }
            }
          }
        ]
      }
    }
  }
}'

Node.js

/**
 * This code snippet updates the conversationalSettings of a Business Messages agent.
 * Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/brands.agents/patch
 *
 * This code is based on the https://github.com/google-business-communications/nodejs-businesscommunications Node.js
 * Business Communications client library.
 */

/**
 * Edit the values below:
 */
const BRAND_ID = 'EDIT_HERE';
const AGENT_ID = 'EDIT_HERE';
const LOCALE = 'en';
const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json';

const businesscommunications = require('businesscommunications');
const {google} = require('googleapis');

// Initialize the Business Communications API
const bcApi = new businesscommunications.businesscommunications_v1.Businesscommunications({});

// Set the scope that we need for the Business Communications API
const scopes = [
  'https://www.googleapis.com/auth/businesscommunications',
];

// Set the private key to the service account file
const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY);

async function main() {
  const authClient = await initCredentials();

  const agentName = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID;

  if (authClient) {
    // Setup the parameters for the API call
    const apiParams = {
      auth: authClient,
      name: agentName,
      updateMask: 'businessMessagesAgent.conversationalSettings.' + LOCALE,
      resource: {
        businessMessagesAgent: {
          conversationalSettings: {
            [LOCALE]: {
              privacyPolicy: { url: 'https://www.your-company-website.com/privacy' },
              welcomeMessage: { text: 'My updated welcome message' },
              offlineMessage: { text: 'My updated offline message' },
              conversationStarters: [
                {
                  suggestion: {
                    reply: {
                      'text': 'Suggestion 2',
                     'postbackData': 'post_back_suggestion_2',
                    },
                  },
                }
              ],
            },
          }
        }
      }
    };

    bcApi.brands.agents.patch(apiParams, {}, (err, response) => {
      if (err !== undefined && err !== null) {
        console.dir(err);
      } else {
        // Agent found
        console.log(response.data);
      }
    });
  }
  else {
    console.log('Authentication failure.');
  }
}

/**
 * Initializes the Google credentials for calling the
 * Business Messages API.
 */
 async function initCredentials() {
  // Configure a JWT auth client
  const authClient = new google.auth.JWT(
    privatekey.client_email,
    null,
    privatekey.private_key,
    scopes,
  );

  return new Promise(function(resolve, reject) {
    // Authenticate request
    authClient.authorize(function(err, tokens) {
      if (err) {
        reject(false);
      } else {
        resolve(authClient);
      }
    });
  });
}

main();

جافا

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.businesscommunications.v1.BusinessCommunications;
import com.google.api.services.businesscommunications.v1.model.*;
import com.google.common.collect.ImmutableMap;
import java.io.FileInputStream;
import java.util.Arrays;

class Main {
  /**
   * Initializes credentials used by the Business Communications API.
   */
  private static BusinessCommunications.Builder getBusinessCommunicationsBuilder() {
    BusinessCommunications.Builder builder = null;
    try {
      GoogleCredential credential = GoogleCredential
            .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY"));

      credential = credential.createScoped(Arrays.asList(
          "https://www.googleapis.com/auth/businesscommunications"));

      credential.refreshToken();

      HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
      JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance();

      // Create instance of the Business Communications API
      builder = new BusinessCommunications
          .Builder(httpTransport, jsonFactory, null)
          .setApplicationName(credential.getServiceAccountProjectId());

      // Set the API credentials and endpoint
      builder.setHttpRequestInitializer(credential);
    } catch (Exception e) {
      e.printStackTrace();
    }

    return builder;
  }

  public static void main(String args[]) {
    try {
      // Create client library reference
      BusinessCommunications.Builder builder = getBusinessCommunicationsBuilder();

      String agentName = "brands/BRAND_ID/agents/AGENT_ID";

      Agent agent = new Agent().setBusinessMessagesAgent(
          new BusinessMessagesAgent().setConversationalSettings(ImmutableMap.of("LOCALE",
              new ConversationalSetting()
                  .setPrivacyPolicy(new PrivacyPolicy().setUrl("PRIVACY_POLICY_URL"))
                  .setWelcomeMessage(new WelcomeMessage().setText("WELCOME_MESSAGE"))
                  .setOfflineMessage(new OfflineMessage().setText("OFFLINE_MESSAGE"))
                  .setConversationStarters(Arrays.asList(
                      new ConversationStarters().setSuggestion(new Suggestion()
                          .setReply(new SuggestedReply()
                              .setText("REPLY_TEXT")
                              .setPostbackData("POSTBACK_DATA"))),
                      )))));

      BusinessCommunications.Brands.Agents.Patch request = builder
          .build().brands().agents().patch(agentName, agent);

      request.setUpdateMask("businessMessagesAgent.conversationalSettings.LOCALE");

      Agent updatedAgent = request.execute();
      System.out.println(updatedAgent.toPrettyString());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
يستند هذا الرمز البرمجي إلى مكتبة برامج Java Business Communications.

Python

"""This code updates the conversational settings of a Business Messages agent.

Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/brands.agents/patch

This code is based on the https://github.com/google-business-communications/python-businessmessages
Python Business Messages client library.
"""

from oauth2client.service_account import ServiceAccountCredentials
from businesscommunications.businesscommunications_v1_client import BusinesscommunicationsV1
from businesscommunications.businesscommunications_v1_messages import (
    Agent,
    BusinessMessagesAgent,
    ConversationStarters,
    ConversationalSetting,
    OfflineMessage,
    PrivacyPolicy,
    WelcomeMessage,
    NegativeBotFeedbackMessage,
    BusinesscommunicationsBrandsAgentsPatchRequest,
)

# Edit the values below:
BRAND_ID = 'EDIT_HERE'
AGENT_ID = 'EDIT_HERE'
SCOPES = ['https://www.googleapis.com/auth/businesscommunications']
SERVICE_ACCOUNT_FILE = './service_account_key.json'

credentials = ServiceAccountCredentials.from_json_keyfile_name(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)

client = BusinesscommunicationsV1(credentials=credentials)

agents_service = BusinesscommunicationsV1.BrandsAgentsService(client)

agent_name = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID

agent=Agent(
                businessMessagesAgent=BusinessMessagesAgent(
                        conversationalSettings=BusinessMessagesAgent.ConversationalSettingsValue(
                        additionalProperties=[BusinessMessagesAgent.ConversationalSettingsValue.AdditionalProperty(
                            key='en',
                            value=ConversationalSetting(
                                privacyPolicy=PrivacyPolicy(url='https://www.your-company-website.com/privacy'),
                                welcomeMessage=WelcomeMessage(text='Welcome to Business Messages'),
                            offlineMessage=OfflineMessage(text='This is an offline message'),
                                conversationStarters=[
                                    ConversationStarters(
                                        suggestion=Suggestion(
                                           reply=SuggestedReply(text='Option 1',
                                  postbackData='option_1')
                                        )
                                    )]
                                )
                            )
                        ]
                    )
                )
)

updated_agent = agents_service.Patch(
        BusinesscommunicationsBrandsAgentsPatchRequest(
            agent=agent,
            name=agent_name,
            updateMask='businessMessagesAgent.conversationalSettings.en'
        )
    )

print(updated_agent)

الإعدادات على مستوى الموقع الجغرافي

# This code updates the agent interaction of a bot and human representatives.
# Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/brands.locations/patch

# Replace the __BRAND_ID__, __AGENT_ID__, __LOCATION_ID__, __LOCALE__
# Make sure a service account key file exists at ./service_account_key.json

curl -X PATCH \
"https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/locations/__LOCATION_ID__?updateMask=conversationalSettings.__LOCALE__" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/business-communications" \
-H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \
-d '{
  "conversationalSettings": {
    "__LOCALE__": {
      "welcomeMessage": {
        "text": "My second welcome message"
      },
      "offlineMessage": {
        "text": "My second offline message"
      },
      "privacyPolicy": {
        "url": "https://www.your-company-website.com/privacy"
      },
      "conversationStarters": [
        {
          "suggestion": {
            "reply": {
              "text": "Suggestion 2",
              "postbackData": "post_back_suggestion_2"
            }
          }
        }
      ]
    }
  }
}'

للحصول على معلومات عن التنسيق والقيم، اطّلِع على brands.agents.patch، brands.locations.patch، و ConversationalSetting.

أمثلة

الإعدادات على مستوى الوكيل

curl -X PATCH \
"https://businesscommunications.googleapis.com/v1/brands/BRAND_ID/agents/AGENT_ID?updateMask=businessMessagesAgent.conversationalSettings.en" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/business-communications" \
-H "$(oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications)" \
-d "{
    'businessMessagesAgent': {
        'conversationalSettings': {
            'en': {
                'welcomeMessage': {
                    'text': 'Thanks for contacting Growing Tree Bank. What can I help with today?',
                },
                'offlineMessage': {
                    'text': 'We\'re closed for the night. Please reach out to us again tomorrow.',
                },
                'privacyPolicy': {
                    'url': 'https://www.growingtreebank.com/privacy',
                },
                'conversationStarters': [
                    {
                        'suggestion': {
                            'reply': {
                                'text': 'Set up an account',
                                'postbackData': 'new-account',
                            },
                        },
                    },
                    {
                        'suggestion': {
                            'reply': {
                                'text': 'Look up account information',
                                'postbackData': 'account-lookup',
                            },
                        },
                    },
                ],
            },
        },
    },
}"

الإعدادات على مستوى الموقع الجغرافي

curl -X PATCH \
"https://businesscommunications.googleapis.com/v1/brands/12345/locations/67890?updateMask=conversationalSettings.en" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/business-communications" \
-H "$(oauth2l header --json /path/to/service/account/key businesscommunications)" \
-d "{
    'conversationalSettings': {
        'en': {
            'welcomeMessage': {
                'text': 'Thanks for contacting Growing Tree Bank on Amphitheatre Pkwy. What can I help with today?',
            },
            'offlineMessage': {
                'text': 'We\'re closed for the night. Please reach out to us again tomorrow.',
            },
            'privacyPolicy': {
                'url': 'https://www.growingtreebank.com/privacy',
            },
            'conversationStarters': [
                {
                    'suggestion': {
                        'reply': {
                            'text': 'What are your hours?',
                            'postbackData': 'hours',
                        },
                    },
                },
                {
                    'suggestion': {
                        'reply': {
                            'text': 'Set up an account',
                            'postbackData': 'new-account',
                        },
                    },
                },
                {
                    'suggestion': {
                        'reply': {
                            'text': 'Look up account information',
                            'postbackData': 'account-lookup',
                        },
                    },
                },
                {
                    'suggestion': {
                        'action': {
                            'text': 'Call us',
                            'postbackData': 'call',
                            'dialAction': {
                              'phoneNumber': '+12223334444',
                            },
                        },
                    },
                },
            ],
        },
    },
}"