2017-05-17 27 views
0

我已經創建了嵌入式虛擬沃森代理聊天機器人類似下面的HTML文件,代碼,用WVA嚴格使用建築的核心能力:嵌入式虛擬沃森代理聊天機器人缺少響應

IBMChat.init({ EL: 'ibm_chat_root', 基本URL: 'https://api.ibm.com/virtualagent/run/api/v1', BOTID: '', XIBMClientID: '', XIBMClientSecret: '' });

我注意到的是,如果我跑在預覽模式下WVA,有輸入「工資單」時,WVA能回來與兩個響應,第一:

訪問您的帳戶信息.. 。

和第二廠名支付:

您的帳戶餘額爲42.01 $,由於在2017年5月17日。你想幹什麼? (更多選項即將推出!)

但是,如果我在HTML聊天機器人輸入相同,反應只回來與第一部分:

訪問您的帳戶信息...

第二部分永遠不會出現。

有沒有其他人遇到同樣的問題?

+0

有沒有人試圖測試嵌入式WVA聊天機器人?在我看來,獨立聊天機器人的行爲與在預覽模式下運行WVA的行爲不同,獨立聊天機器人始終無法接收第二部分響應。 – starflake

回答

0

「預覽」模式中的版本有一些模擬「動作」處理程序設置。顯然,不是每個用戶都會欠42美元!在github上的示例代碼中,沒有設置模擬動作處理程序。有關於如何訂閱這些動作事件與處理這方面的例子:https://github.com/watson-virtual-agents/chat-widget/tree/master/examples/basic-actions-example

截至17年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); 
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