Встроенный чат-агент 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