用于在 Telegram 上部署的 Bot Framework 中的新行

New Line in Bot Framework for deploying on Telegram

方法一:

public async Task WelcomeAsync(
        IDialogContext context,
        IAwaitable<Message> argument)
{
    var message = await argument;
    message.SetBotConversationData("DateTime", DateTime.UtcNow);

    StorageAccess.StoreTemporaryLog(
    StorageAccess.GetDateTime(message.GetBotConversationData<DateTime>("DateTime")),
        "user",
        message.Text);

    await context.PostAsync(
        "Welcome to VAM Insurance Bot\n" +
        "Do you already have a policy or do you want to buy a new policy?\n" +
        "1.Already\n" +
        "2.New\n" +
        "Please enter the correct choice:");

    StorageAccess.StoreTemporaryLog(
        StorageAccess.GetDateTime(message.GetBotConversationData<DateTime>("DateTime")),
        "bot",
        "Welcome to VAM Insurance Bot\n" +
        "Do you already have a policy or do you want to buy a new policy?\n" +
        "1.Already\n" +
        "2.New\n" +
        "Please enter the correct choice:");

    context.Wait(AlreadyNewAsync);
}

方法二:

public async Task AuthenicateClientAsync(
        IDialogContext context,
        IAwaitable<Message> argument)
{
    var message = await argument;
    StorageAccess.StoreStructuredLog(
        StorageAccess.GetDateTime(message.GetBotConversationData<DateTime>("DateTime")),
        message.GetBotUserData<string>("policyNo"),
        "user",
        message.Text);

    if (DBAccess.AuthenticateOTP(message.Text))
    {
        await context.PostAsync("You have been successfully authenticated!");

        StorageAccess.StoreStructuredLog(
            StorageAccess.GetDateTime(
                message.GetBotConversationData<DateTime>("DateTime")),
            message.GetBotUserData<string>("policyNo"),
            "bot",
            "You have been successfully authenticated!");

        await context.PostAsync(
            "What would you like to do?\n" +
            "1. View your policy\n" +
            "2. Renew you policy\n" +
            "3. File an insurance claim\n" +
            "Please enter the suitable options number:");

        StorageAccess.StoreStructuredLog(
            StorageAccess.GetDateTime(
                message.GetBotConversationData<DateTime>("DateTime")),
            message.GetBotUserData<string>("policyNo"),
            "bot",
            "What would you like to do?\n" +
            "1. View your policy\n" +
            "2. Renew you policy\n" +
            "3. File an insurance claim\n" +
            "Please enter the suitable options number:");

        context.Wait(ViewRenewFileClaimAsync);
    }
    else
    {
        await context.PostAsync(
            "The OTP that you have entered is either incorrect or expired.\n" +
            "Would you like to go over again?\n" +
            "Yes\n" +
            "No");

        StorageAccess.StoreStructuredLog(
             StorageAccess.GetDateTime(
                 message.GetBotConversationData<DateTime>("DateTime")),
             message.GetBotUserData<string>("policyNo"),
             "bot",
             "The OTP that you have entered is either incorrect or expired.\n" +
             "Would you like to go over again?\n" +
             "Yes\n" +
             "No");

         context.Wait(RepeatAsync);
    }
}

这是我项目中对话的两种方式。我已将它们部署在 Azure 上并连接到 Telegram。但是“\n”似乎并不是在任何地方都有效。正如您在屏幕截图中所见,它仅在某些地方有效。如您所见,方法 1 的对话没有换行。但是在方法 2 中,他们正在为最后一个换行。 访问https://storageangsu.blob.core.windows.net/policy-number-0123456789/image_damage获取图片

BotFramework 使用 Markdown。可以看到解决方法 or in the BotFramework documentation