گفتگو را آغاز کنید

در مکالمات با نمایندگان پیام‌های تجاری، پیام خوشامدگویی لحن تعامل را تعیین می‌کند. همچنین به کاربران اطلاع می‌دهد که نماینده چه کاری می‌تواند انجام دهد، که این امر سوالات و انتظارات کاربر را شکل می‌دهد.

هر بار که کاربر مکالمه‌ای را باز می‌کند، عامل یک پیام خوشامدگویی ارسال می‌کند. عامل همچنین می‌تواند شروع‌کننده‌های مکالمه را نمایش دهد تا کاربران را در مسیرهای شناخته‌شده یا مکرر راهنمایی کند.

If a user tries to start a conversation outside of an agent's operating hours, the agent displays an offline message you can use to share alternative channels or suggest next steps. By leveraging these settings, you can increase your agent's reliability and usability.

شروع کننده های مکالمه

تنظیمات سطح عامل و مکان

می‌توانید تنظیمات مکالمه را در سطح نماینده یا مکان مشخص کنید.

  • سطح اپراتور: این تنظیمات مکالمه برای همه مکالمات با اپراتور در تمام نقاط ورودی اعمال می‌شود.

    یک پیام خوشامدگویی در سطح کارشناس ممکن است با این جمله شروع شود: «از تماس شما با Bridgepoint Runners متشکریم...» آغازکنندگان مکالمه می‌توانند بر اقدامات یا اطلاعات در سطح شرکت تمرکز کنند.

  • سطح مکان: این تنظیمات، تنظیمات سطح عامل را لغو می‌کنند و فقط برای مکالمات با آن مکان از طریق نقاط ورودی PLACESHEET و MAPS اعمال می‌شوند.

    یک پیام خوشامدگویی در سطح مکان ممکن است با این جمله شروع شود: «از تماس شما با Bridgepoint Runners در Amphitheatre Pkwy متشکریم...» آغازکنندگان مکالمه می‌توانند بر وظایف یا اطلاعات مبتنی بر مکان تمرکز کنند. یک پیام آفلاین ممکن است به زمان بازگشایی بعدی مکان اشاره کند.

مناطق محلی

نمایندگان و مکان‌ها می‌توانند تنظیمات جداگانه‌ای را برای هر زبانی که پشتیبانی می‌کنند، مشخص کنند. به عنوان مثال، یک نماینده ممکن است یک پیام خوشامدگویی به زبان انگلیسی برای زبان "en" تعیین کند و همان پیام خوشامدگویی را به زبان اسپانیایی برای زبان "es" داشته باشد. پیام‌های تجاری، تطابق بین زبان گزارش‌شده دستگاه کاربر و زبان‌هایی را که یک نماینده یا مکان تنظیمات مکالمه‌ای برای آنها دارد، برقرار می‌کند.

این تطابق زبان در فیلد resolvedLocale هر پیام گزارش می‌شود. می‌توانید defaultLocale یک عامل یا مکان را مشخص کنید که به تطابق زبان resolve شده وزن می‌دهد. به Localization و locales مراجعه کنید.

پیام‌های تجاری از زبان محلیِ تعیین‌شده برای تعیین تنظیمات مکالمه‌ای که باید اعمال شوند، استفاده می‌کنند.

پیام خوشامدگویی

اولین پیام در مکالمه بین یک اپراتور و کاربر، پیام خوشامدگویی اپراتور است. پیام خوشامدگویی به طور خودکار پس از شروع مکالمه جدید توسط کاربر ظاهر می‌شود. یک پیام خوشامدگویی خوب، انتظارات کاربر را برای تعامل با اپراتور تعیین می‌کند. برای ویرایش پیام خوشامدگویی، به «به‌روزرسانی تنظیمات مکالمه » مراجعه کنید.

شروع کننده های مکالمه

در حالی که یک پیام خوشامدگویی خوب، عملکرد یک کارشناس را در سطح بالایی پوشش می‌دهد و پایان باز دارد، شروع‌کننده‌های خوب مکالمه، کاربران را به سمت سوالات متداول یا عملکردهای شناخته‌شده هدایت می‌کنند.

شروع‌کننده‌های مکالمه به صورت پاسخ‌های پیشنهادی عمودی ظاهر می‌شوند و مستقیماً پس از پیام خوش‌آمدگویی قرار می‌گیرند. وقتی کاربر روی شروع‌کننده مکالمه ضربه می‌زند، عامل محتوای از پیش تعریف‌شده و داده‌های پس‌پستی را که هنگام مشخص کردن شروع‌کننده تنظیم کرده‌اید، دریافت می‌کند.

اگر یک اپراتور از قابلیت خودکارسازی برای درخواست‌های خاصی پشتیبانی کند، شروع‌کننده‌های مکالمه ممکن است به آن درخواست‌ها نگاشت شوند و به شما امکان دهند برای اتوماسیون به ورودی‌های شناخته‌شده تکیه کنید و سوالات کاربر را به صورت آزاد برای اپراتورهای زنده آماده پاسخگویی ارسال کنید.

یک اپراتور می‌تواند حداکثر ۵ شروع‌کننده مکالمه داشته باشد و هر شروع‌کننده می‌تواند حداکثر ۳۵ کاراکتر داشته باشد.

برای افزودن یا ویرایش آغازگرهای مکالمه، به به‌روزرسانی تنظیمات مکالمه مراجعه کنید.

پیام‌های آفلاین

وقتی کاربری خارج از ساعات کاری اپراتور (مطابق تعریف MessagingAvailability ) مکالمه‌ای را با اپراتور آغاز می‌کند، کاربر پیام آفلاین اپراتور را دریافت می‌کند. هنگام ارسال پیام آفلاین، فقط در دسترس بودن نماینده انسانی در نظر گرفته می‌شود. اپراتورهایی که فقط نماینده ربات دارند، همیشه یک پیام خوشامدگویی ارسال می‌کنند. یک پیام آفلاین خوب

  • دلیل عدم دسترسی نماینده را به اشتراک می‌گذارد
  • کاربر را در مورد مراحل بعدی مناسب یا کانال‌های ارتباطی جایگزین راهنمایی می‌کند.
  • با لحن پیام خوشامدگویی و شروع‌کننده‌های مکالمه هماهنگ است

پیام آفلاین بد

«ببخشید، ما تعطیل هستیم.»

پیام آفلاین خوب

«ما الان تعطیل هستیم، اما فردا ساعت ۸ صبح دوباره در دسترس خواهیم بود. اگر به کمک فوری نیاز دارید، با پشتیبانی با شماره +۱۲۲۲۳۳۴۴۴۴ یا support@gtb.com تماس بگیرید.»

برای ویرایش پیام آفلاین، به «به‌روزرسانی تنظیمات مکالمه» مراجعه کنید.

تنظیمات مکالمه را به‌روزرسانی کنید

برای مدیریت پیام خوشامدگویی یا شروع‌کننده‌های مکالمه، شما یک درخواست PATCH با رابط برنامه‌نویسی کاربردی ارتباطات تجاری (Business Communications API) ارسال می‌کنید تا فیلد conversationalSettings یک عامل یا مکان را به‌روزرسانی کنید.

وقتی فیلد conversationalSettings به‌روزرسانی می‌کنید، باید مقادیری را برای همه فیلدها در شیء ConversationalSetting وارد کنید. درخواست‌های به‌روزرسانی، محتوای همه فیلدهایی را که ویرایش می‌کنید، از جمله فیلدهای فرزند، بازنویسی می‌کنند. برای مثال، اگر درخواستی برای تغییر پیام خوش‌آمدگویی ارسال کنید اما شروع‌کننده‌های مکالمه را وارد نکنید، درخواست، شروع‌کننده‌های مکالمه قبلی را حذف می‌کند.

پیش‌نیازها

قبل از به‌روزرسانی تنظیمات مکالمه، به موارد زیر نیاز دارید:

  • مسیر کلید حساب سرویس پروژه GCP شما در دستگاه توسعه‌تان
  • محلی که می‌خواهید تنظیمات آن را به‌روزرسانی کنید
  • برای تنظیمات سطح عامل، name عامل (برای مثال، "brands/12345/agents/67890")

    اگر name نماینده را نمی‌دانید، به فهرست همه نمایندگان یک برند مراجعه کنید.

  • برای تنظیمات سطح مکان، name مکان (برای مثال، "brands/12345/locations/67890")

    اگر name مکان را نمی‌دانید، به فهرست همه مکان‌های یک برند مراجعه کنید.

  • محلی که باید به‌روزرسانی شود، به عنوان یک کد زبان دو کاراکتری ISO 639-1

  • پیام خوشامدگویی جدید

  • آدرس اینترنتی سیاست حفظ حریم خصوصی

  • (اختیاری) متن برای شروع مکالمه

  • (اختیاری) داده‌های Postback برای شروع مکالمه

  • (اختیاری) پیام آفلاین جدید

اگر مقادیر فعلی conversationalSettings نمی‌دانید، به Get agent information و Get location information مراجعه کنید.

درخواست به‌روزرسانی را ارسال کنید

برای به‌روزرسانی عامل یا مکان، دستور زیر را اجرا کنید. متغیرها را با مقادیری که در پیش‌نیازها شناسایی کرده‌اید، جایگزین کنید.

اگر شروع‌کننده‌های مکالمه را نمی‌خواهید، conversationStarters و تمام فیلدهای فرزند آن را حذف کنید.

تنظیمات سطح عامل

حلقه

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

نود جی اس

/**
 * 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();
    }
  }
}
این کد بر اساس کتابخانه کلاینت ارتباطات تجاری جاوا نوشته شده است.

پایتون

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