【发布时间】:2018-09-28 15:23:53
【问题描述】:
我正在使用 bot 框架在直接通道中创建一个机器人。 已经创建了 2 个机器人,一个是英语,一个是法语,但我的想法是只创建一个机器人,并根据用户调用 dialog englishluis 和 frenchluis。
我的机器人也在使用语音识别。
这是我的法语直通代码:
<!DOCTYPE html>
<html>
<head>
<link href="https://cdn.botframework.com/botframework-
webchat/latest/botchat.css" rel="stylesheet" />
</head>
<body>
<div id="bot" />
<script src="https://cdn.botframework.com/botframework-
webchat/latest/botchat.js"></script>
<script src="https://cdn.botframework.com/botframework-
webchat/latest/CognitiveServices.js"></script>
<script>
var speechOptions = {
speechRecognizer: new CognitiveServices.SpeechRecognizer(
{ locale: 'fr-fr', subscriptionKey:
'xxxxxxx' }),
speechSynthesizer: new CognitiveServices.SpeechSynthesizer(
{
subscriptionKey: 'xxxxxxxxxxx',
gender: CognitiveServices.SynthesisGender.Female,
voiceName: 'Microsoft Server Speech Text to Speech Voice (fr-FR,
HortenseRUS)'
})
}
var botConnection = new BotChat.DirectLine({
// secret:
"yF0xxxxxxxxxxxxxxM",
secret: "yBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
webSocket: true ,
});
BotChat.App({
speechOptions: speechOptions,
botConnection: botConnection,
user: {
id: 'userid',
name: 'User',
},
bot: { id: 'botid' },
resize: 'detect',
locale: 'fr-FR'
},
document.getElementById("bot"));
function postHelp() {
botConnection
.postActivity({
from: { id: 'userid', name: 'User' },
name: 'postHelp',
type: 'message',
text: 'help'
})
.subscribe(function(id) {
console.log('"postHelp" sent');
});
};
function welcome() {
botConnection
.postActivity({
from: { id: 'userid', name: 'User' },
name: 'welcome',
type: 'event',
value: 'help'
})
.subscribe(function (id) {
console.log('"welcome" sent');
});
}
</script>
</body>
</html>
如何创建一个函数来检测来自 messagecontroller.cs 的语言,或者如果您有任何其他想法,请帮助我。
提前谢谢你
directline.html的新代码
<!DOCTYPE html>
<html>
<head>
<link href="https://cdn.botframework.com/botframework-
webchat/latest/botchat.css" rel="stylesheet" />
</head>
<div id="bot" />
<script src="https://cdn.botframework.com/botframework-
webchat/latest/botchat.js"></script>
<script src="https://cdn.botframework.com/botframework-
webchat/latest/CognitiveServices.js"></script>
<script>
var speechOptions = {
speechRecognizer: new CognitiveServices.SpeechRecognizer(
{ locale: String.localrec, subscriptionKey:
'xxxxxxxxxxxxx' }),
speechSynthesizer: new CognitiveServices.SpeechSynthesizer(
{
subscriptionKey: 'xxxxxxxxxxxxxxxx',
gender: CognitiveServices.SynthesisGender.Female,
// voiceName: 'Microsoft Server Speech Text to Speech Voice (fr-
FR, HortenseRUS)'
voiceName: String.localevoice
})
}
var botConnection = new BotChat.DirectLine({
// secret: "yxxxxxxxxxxxxxxxM",
secret: "yxxxxxxxxxxxxxxxxxxx",
webSocket: true ,
});
BotChat.App({
speechOptions: speechOptions,
botConnection: botConnection,
user: {
id: 'userid',
name: 'User',
},
bot: { id: 'botid' },
resize: 'detect',
locale: String.localed
},
document.getElementById("bot"));
function postHelp() {
botConnection
.postActivity({
from: { id: 'userid', name: 'User' },
name: 'postHelp',
type: 'message',
text: 'help'
})
.subscribe(function(id) {
console.log('"postHelp" sent');
});
};
function welcome() {
botConnection
.postActivity({
from: { id: 'userid', name: 'User' },
name: 'welcome',
type: 'event',
value: 'help'
})
.subscribe(function (id) {
console.log('"welcome" sent');
});
}
var getFirstBrowserLanguage = function () {
var nav = window.navigator,
browserLanguagePropertyKeys = ['language', 'browserLanguage',
'systemLanguage', 'userLanguage'],
i,
language;
// support for HTML 5.1 "navigator.languages"
if (Array.isArray(nav.languages)) {
for (i = 0; i < nav.languages.length; i++) {
language = nav.languages[i];
if (language && language.length) {
return language;
}
}
}
// support for other well known properties in browsers
for (i = 0; i < browserLanguagePropertyKeys.length; i++) {
language = nav[browserLanguagePropertyKeys[i]];
if (language && language.length) {
return language;
}
}
return null;
};
console.log(getFirstBrowserLanguage());
let localed = "";
if ((navigator.languages != undefined) || (navigator.languages == "fr") ||
getFirstBrowserLanguage() =="fr")
String.localed = 'fr-fr';
else
String.localed = 'en-US';
let localrec = "";
if ((navigator.languages != undefined) || (navigator.languages == "fr") ||
getFirstBrowserLanguage() =="fr")
String.localrec = 'fr-fr';
else
String.localrec = null;
function getVoice(localevoice) {
if (locale.startsWith('fr'))
return 'Microsoft Server Speech Text to Speech Voice (fr-FR,
HortenseRUS)';
else
return 'Microsoft Server Speech Text to Speech Voice (en-US, ZiraRUS)';
}
let localevoice = "";
if ((navigator.languages != undefined) || (navigator.languages == "fr") ||
(getFirstBrowserLanguage() =="fr") || (navigator.languages[0] == "fr") ||
(navigator.language == "fr") || (navigator.userLanguage == "fr" ))// IE
<= 10
String.localevoice = 'Microsoft Server Speech Text to Speech Voice (fr-
FR, HortenseRUS)';
else
String.localevoice = 'Microsoft Server Speech Text to Speech Voice (en-
US,
ZiraRUS)';
</script>
</body>
</html>
现在的问题是机器人可以理解 bonjour 是 frenchdialog 和 hello 或其他英语单词 callenglishdialog。但是当我开始讲话时,法语对话中的机器人会像用英语一样阅读单词。 我在我的代码中找不到问题
【问题讨论】:
-
您使用的是哪个 sdk? Here is a v4 sample 用于在对话期间动态更改机器人的语言。
-
您如何更改 WebChat 中的输入语言?我想生成德语 - 德语对话,但目前,我得到了德语 - 英语。意味着输入是英文的,对我的机器人没有意义。在 HTML 中,我将语言环境更改为“de-DE”,但输入仍然是英文...
-
如果我在上面复制粘贴您的代码并仅解析我的子键,则 WebChat 中不会显示任何内容...
标签: c# html botframework speech-recognition direct-line-botframework