无论如何在机器人模拟器或使用MS Bot框架的任何其他通道中显示自动填充选项。如果没有,你能否提出其他选择?
无论如何在机器人模拟器或使用MS Bot框架的任何其他通道中显示自动填充选项
我在我的网站上嵌入了网络聊天,我使用以下方法为网络聊天输入框实现自动填充(自动建议),你可以参考它。
Html代码:
<div id="bot"></div>
<div>
<datalist id="mylists">
<option value="Hello World">
<option value="Azure">
<option value="botframework">
<option value="LUIS">
<option value="QNA">
</datalist>
</div>
JS代码:
<script>
BotChat.App({
directLine: { secret: "{directline_secret}" },
user: { id: 'You'},
bot: { id: '{bot_id}' },
resize: 'detect'
}, document.getElementById("bot"));
$(function () {
//in this sample, I use a static datalist
//you can also retrieve data from external storage, such as database,
//and dynamically generate datalist based on records
//then append dynamic datalist to web page
//attach the datalist to webchat input box
$("input.wc-shellinput").attr("list", "mylists");
})
</script>
测试结果:
我还使用HTML5 datalist来实现自动建议。在这里,我将分享我的示例编码。
Html代码:
<div id="bot"></div> //bot directline div
<datalist id="mylists"></datalist> //(suggestion list)
<template id="resultstemplate">
<option>Ray0</option>
<option>Ray1</option>
<option>Ray2</option>
<option>Ray3</option>
<!--etc ... similar options skipped -->
<option>Ray2123</option>
<option>Ray3123</option>
</template>
</div>
JS代码
$("input.wc-shellinput").attr("list", "mylists"); //append data list option with input box
var search = document.querySelector('.wc-shellinput'); // chat input box class(.wc-shellinput)
var results = document.querySelector('#mylists'); // suggestion list
// below query for showing suggestion list in the chat & with limited count or otherwise large suggestion list will appear in the chat bot
var templateContent = document.querySelector('#resultstemplate').content;
search.addEventListener('keyup', function handler(event) {
while (results.children.length) results.removeChild(results.firstChild);
var inputVal = new RegExp(search.value.trim(), 'i');
var set = Array.prototype.reduce.call(templateContent.cloneNode(true).children, function searchFilter(frag, item, i) {
if (inputVal.test(item.textContent) && frag.children.length < 6) frag.appendChild(item);
return frag;
}, document.createDocumentFragment());
results.appendChild(set);
});