Встроенный чат-агент Watson Virtual Agent отсутствует ответ

Я создал html-файл со встроенным чат-ботом виртуального агента Watson, код которого аналогичен приведенному ниже, и WVA строго использует основные возможности здания:

IBMChat.init ({el: 'ibm_chat_root', baseURL: 'https://api.ibm.com/virtualagent/run/api/v1', botID: '', XIBMClientID: '', XIBMClientSecret: ''});

Что я заметил, так это то, что если я запустил WVA в режиме предварительного просмотра и ввел "счет оплаты", WVA может вернуться с ответом из двух частей, с первым:

Доступ к информации вашей учетной записи...

и второй сделать платеж:

Остаток на вашем счету составляет $42,01, срок погашения которого 17.05.2017. Чем бы Вы хотели заняться? (Скоро появятся другие варианты!)

Однако, если я ввожу то же самое в своем HTML-боте, ответ возвращается только с первой частью:

Доступ к информации вашей учетной записи...

и вторая часть никогда не выходит.

Кто-нибудь еще испытывает такую ​​же проблему?

2 ответа

Версия в режиме "Предварительный просмотр" имеет некоторые фиктивные настройки обработчиков "действий". Очевидно, что не каждый из вас должен был бы $42! В примере кода на github обработчики ложных действий не настроены. Здесь приведены примеры того, как подписаться на эти события действия с помощью обработчиков: https://github.com/watson-virtual-agents/chat-widget/tree/master/examples/basic-actions-example

Начиная с 31.05.17 вы можете охватить все встроенные действия, используя фрагмент кода ниже...

const config = { instance: null };

const getUserProfileVariablesMap = {
    'bill_amount': '42.01',
    'payment_due_date': (() => {
        const currentDate = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
        return `${currentDate.getMonth() + 1}/${currentDate.getDate()}/${currentDate.getFullYear()}`;
})(),
    'authorized_users': 'Bob Everyman and Jane Doe'
};

const getUserProfileVariables = (data) => {
    const variables = data.message.action.args.variables;
    variables.forEach(v => {
        const value = getUserProfileVariablesMap[v];
        (value) ? config.instance.profile.set(v, value) : config.instance.profile.set(v, '[sample data]');
    });
    config.instance.sendSilently('success');
};

const success = () => config.instance.sendSilently('success');
const agent = () => config.instance.receive('On your own site you would run code to connect to an agent now.');
const accountSettings = () => config.instance.receive('On your own site you would run code to open the Account Settings page now.');

function registerActions(instance) {
    config.instance = instance;
    instance.subscribe('action:getUserProfileVariables', getUserProfileVariables);
    instance.subscribe('action:updateAddress', success);
    instance.subscribe('action:updateUserName', success);
    instance.subscribe('action:updatePhoneNumber', success);
    instance.subscribe('action:updateEmail', success);
    instance.subscribe('action:payBill', success);
    instance.subscribe('action:sendPaymentReceipt', success);
    instance.subscribe('action:agent', agent);
    instance.subscribe('action:openAccountSettingsPage', accountSettings);
};

window.IBMChatActions = {
    registerActions: registerActions
};

// window.IBMChatActions.registerActions(window.IBMChat);

В административном предварительном просмотре вы получаете фальшивые заглушки кода, которые обрабатывают запросы действий от агента.

Когда одно из этих действий вызывается, виджет выводит сообщение "Обрабатывается...", а затем вызывает всех зарегистрированных подписчиков для этого действия. Именно эти зарегистрированные подписчики могут продолжить разговор, отправив сообщение "success", "failure", или же "cancel" вернуться на сервер.

Например, агент может передать "payBill" действие. Вы хотите позвонить в свой платежный шлюз, определить, был ли он успешным, а затем уведомить агента о результате:

IBMChat.init(/* Settings */);

IBMChat.subscribe('action:payBill', function() {
  var data = {
    amount: IBMChat.profile.get('amount'),
    card: {
      number: IBMChat.profile.get('cc_number'),
      // ... other private card data
    }
  };
  $.post('https://www.myserver.com/payment-gateway', data)
   .done( function() {
     IBMChat.sendSilently('success');
   })
   .fail( function() {
     IBMChat.sendSilently('failure');
   });
});

Документация по действиям https://github.com/watson-virtual-agents/chat-widget/blob/master/docs/DOCS.md#actions

Другие вопросы по тегам