Bot Framework: разрешить произнесение PromptDialog.Text cortana - PullRequest
0 голосов
/ 04 июня 2018

Мне нужно, чтобы Кортана прочитала все мои подсказки, пока мне удалось заставить его произносить простые фразы, как в этом примере:

[LuisIntent("Thanks")]
public async Task Thanks(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)
{

    await context.SayAsync(text: Phrases.YOURE_WELCOME, speak: Phrases.YOURE_WELCOME);
    context.Wait(this.MessageReceived);

}

Но я не могу сделать это на PromptDialogs.TextУ меня есть этот код:

private async Task OnCustomerSet(IDialogContext context, IAwaitable<string> result)
{

    string name = await result;
    PromptDialog.Text(context, OnNIFSet, Phrases.ASK_CUSTOMER_NIF);

}

Как мне заставить Кортану также произнести эту подсказку?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Обновление: я отправил запрос на получение , чтобы добавить его в C # SDK, и при следующем выпуске он будет частью пакета bot.builder.Текущий выпуск 3.15.2.2 (на момент написания этой статьи), поэтому все, что выше, должно иметь его.он будет в SDK, поэтому вам не нужно будет использовать метод в этом ответе.

После более глубокого изучения я смог найти решение, которое будет работать без изменений вSDK и я подтвердили, что это уже работает в узле из коробки.Я еще добавлю изменения в запрос на извлечение, но это должно вам помочь.

Вы можете создать класс, который унаследует от PromptDialog, и создать конструктор для PromptDialog.text, например так:

public class PromptDialogTextSpeak:PromptDialog
{
    public static void Text(IDialogContext context, ResumeAfter<string> resume, IPromptOptions<string> promptOptions)
    {
        var child = new PromptString(promptOptions);
        context.Call<string>(child, resume);
    }
}

Мне удалось заставить это работать с помощью простого приглашения, такого как:

 var text = "this is a prompt";
PromptOptions<string> qwerty = new PromptOptions<string>(text, speak: text);
PromptDialogTextSpeak.Text(context, AfterPrompt, qwerty);
0 голосов
/ 04 июня 2018

Вы можете добавить атрибут выступления в Option и использовать SSML Helper для чтения диалогового окна приглашения.

var promptOptions = new PromptOptions<string>(
                Resources.ChooseSides,
                choices: choices,
                descriptions: descriptions,
                speak: SSMLHelper.Speak(Utils.RandomPick(Resources.ChooseSidesSSML))); // spoken prompt

PromptDialog.Choice(context, this.DiceChoiceReceivedAsync, promptOptions);

Пожалуйста, обратитесь к doc для получения подробной информации и Образец GitHub .Если вам нужна дополнительная помощь, спрашивайте;)

...