Я хочу добавить голосовую опцию в чат-бот пользовательского интерфейса кендо. Я могу добиться этого с помощью веб-чата, но как сделать то же самое в кендо?
Ниже приведен код, с помощью которого я могу получить речевую опцию в веб-чате. Речевая опция включена код Я хочу добиться чего-то подобного. Речь на ботче
Заранее спасибо.
$(document).ready(function () {
window.chat = $("#BotChatGoesHere").kendoChat({
post: function (args) {
agent.postMessage(args);
},
}).data("kendoChat");
var agent = new DirectLineAgent(window.chat, "token");
});
const speechOptions = {
speechRecognizer: new KendoChat.Speech.BrowserSpeechRecognizer(),
speechSynthesizer: new KendoChat.Speech.BrowserSpeechSynthesizer()
};
var AdaptiveCardComponent = kendo.chat.Component.extend({
init: function (options, view) {
kendo.chat.Component.fn.init.call(this, options, view);
var adaptiveCard = new AdaptiveCards.AdaptiveCard();
adaptiveCard.hostConfig = new AdaptiveCards.HostConfig({
fontFamily: "Segoe UI, Helvetica Neue, sans-serif",
});
adaptiveCard.parse(options);
var bodyElement = $("<div'>").addClass("k-card-body").append(adaptiveCard.render());
this.element.addClass("k-card").append(bodyElement);
}
});
kendo.chat.registerComponent("application/vnd.microsoft.card.adaptive", AdaptiveCardComponent);
window.DirectLineAgent = kendo.Class.extend({
init: function (chat, secret) {
this.speechOptions = speechOptions;
this.chat = chat;
this.iconUrl = "https://docs.microsoft.com/en-us/azure/bot-service/v4sdk/media/logo_bot.svg?view=azure-bot-service-4.0";
this.agent = new DirectLine.DirectLine({ secret: secret });
this.agent.activity$.subscribe($.proxy(this.onResponse, this));
},
postMessage: function (args) {
var postArgs = {
text: args.text,
type: args.type,
timestamp: args.timestamp,
from: args.from
};
this.agent.postActivity(postArgs)
.subscribe();
},
onResponse: function (response) {
if (response.from.id === this.chat.getUser().id) {
return;
}
response.from.iconUrl = this.iconUrl;
this.renderMessage(response);
this.renderAttachments(response);
this.renderSuggestedActions(response.suggestedActions);
},
renderMessage: function (message) {
if (message.text || message.type == "typing") {
this.chat.renderMessage(message, message.from);
}
},
renderAttachments: function (data) {
this.chat.renderAttachments(data, data.from);
},
renderSuggestedActions: function (suggestedActions) {
var actions = [];
if (suggestedActions && suggestedActions.actions) {
actions = suggestedActions.actions;
}
this.chat.renderSuggestedActions(actions);
},
});