بدء المحادثة

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

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

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

بدايات محادثات

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

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

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

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

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

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

اللغات

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

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

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

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

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

بدايات محادثات

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

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

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

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

لإضافة بدايات محادثات أو تعديلها، راجع تحديث إعدادات المحادثات.

الرسائل بلا إنترنت

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

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

رسالة سيئة بلا اتصال بالإنترنت

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

رسالة جيدة بلا اتصال بالإنترنت

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

لتعديل رسالة بلا اتصال بالإنترنت، راجِع تعديل إعدادات المحادثات.

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

لإدارة رسالة ترحيب أو بدايات محادثات، يمكنك تقديم طلب تصحيح باستخدام واجهة برمجة التطبيقات لاتصالات الأعمال لتعديل حقل conversationalSettings الخاص بالموقع الجغرافي أو الوكيل.

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

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

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

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

    إذا كنت لا تعرف name للوكيل، يمكنك الاطّلاع على إدراج جميع الوكلاء لعلامة تجارية.

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

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

  • المنطقة المحلية المطلوب تعديلها، باعتبارها رمز لغة بتنسيق ISO 639-1 مؤلفًا من حرفين

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

  • عنوان 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();

Java

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',
                            },
                        },
                    },
                },
            ],
        },
    },
}"