我已经创建了一个带有嵌入式Watson Virtual Agent聊天机器人的html文件,代码如下,WVA严格使用构建核心功能:
IBMChat.init({ el:' ibm_chat_root', baseURL:' https://api.ibm.com/virtualagent/run/api/v1', botID:'', XIBMClientID:'', XIBMClientSecret:'' });我注意到的是,如果我在预览模式下运行WVA,并且输入"支付账单",WVA可以带回两个响应,第一个:
访问您的帐户信息...
和第二次付款:
2017年5月17日,您的帐户余额为42.01美元。你想干什么? (更多选项即将推出!)
但是,如果我在我的HTML聊天机器人中输入相同内容,则响应仅返回第一部分:
访问您的帐户信息...
,第二部分永远不会出来。
有没有其他人遇到同样的问题?
答案 0 :(得分:0)
"预览"中的版本模式有一些模拟"动作"处理程序设置。显然,并非每个用户都欠42美元!在github上的示例代码中,未设置模拟操作处理程序。有关如何使用处理程序订阅这些操作事件的示例:https://github.com/watson-virtual-agents/chat-widget/tree/master/examples/basic-actions-example
截至2017年5月31日,您可以使用下面的代码段覆盖所有内置操作...
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);
答案 1 :(得分:0)
在管理预览中,您将获得处理来自代理的操作请求的虚假代码存根。
当调用其中一个操作时,窗口小部件将打印“正在处理...”消息,然后调用该操作的所有已注册订阅者。由这些注册用户通过静默地将"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