傳送和接收簡訊

適用于: SDK v4

Bot 與使用者通訊的主要方式,同樣地會透過 訊息 活動來接收通訊。 有些郵件可能只包含純文字,有些郵件可能包含更豐富的內容,例如卡片或附件。 Bot 的回合處理常式會接收來自使用者的訊息,而且您可以從該處傳送回應給使用者。 回合內容物件提供將訊息傳回給使用者的方法。 本文說明如何傳送純文字訊息。

大部分文字欄位都支援 Markdown,但支援可能會因通道而異。

針對執行中的 Bot 傳送和接收訊息,請遵循目錄頂端的快速入門,或查看 Bot 的運作 方式一文,其中也會連結到可供您自行執行的範例。

注意

Bot Framework JavaScript、C# 和 Python SDK 將會繼續受到支援,不過,JAVA SDK 即將淘汰,最終長期支援將于 2023 年 11 月結束。 只會執行此存放庫中的重要安全性和錯誤修正。

使用 JAVA SDK 建置的現有 Bot 將繼續運作。

針對新的 Bot 建置,請考慮使用 Power Virtual Agents ,並閱讀 選擇正確的聊天機器人解決方案

如需詳細資訊,請參閱 Bot 建置 的未來。

傳送簡訊

若要傳送簡訊,請指定您想要以活動的形式傳送的字串:

在 Bot 的活動處理常式中,使用轉向內容物件的 SendActivityAsync 方法即可傳送單一訊息回應。 您也可以使用 物件的 SendActivitiesAsync 方法一次傳送多個回應。

await turnContext.SendActivityAsync($"Welcome!");

接收簡訊

若要處理文字訊息,請使用 活動 物件的 text 屬性

在 Bot 的活動處理常式中,使用下列程式碼來接收訊息。

var responseMessage = turnContext.Activity.Text;

傳送輸入指標

使用者預期會及時回應其訊息。 如果您的 Bot 會執行一些長時間執行的工作,例如呼叫伺服器或執行查詢,而不需讓使用者知道 Bot 聽到這些訊息,使用者可能會變得不耐煩,並傳送其他訊息,或只是假設 Bot 已中斷。

網路聊天和 Direct Line 通道 Bot 可以支援傳送輸入指示,向使用者顯示已接收和正在處理訊息。 不過,您的 Bot 必須讓回合在 15 秒內結束,否則連線or 服務將會逾時。如需較長的程式,請深入瞭解如何傳送 主動式訊息

下列範例示範如何傳送輸入指示。

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    if (string.Equals(turnContext.Activity.Text, "wait", System.StringComparison.InvariantCultureIgnoreCase))
    {
        await turnContext.SendActivitiesAsync(
            new Activity[] {
                new Activity { Type = ActivityTypes.Typing },
                new Activity { Type = "delay", Value= 3000 },
                MessageFactory.Text("Finished typing", "Finished typing"),
            },
            cancellationToken);
    }
    else
    {
        var replyText = $"Echo: {turnContext.Activity.Text}. Say 'wait' to watch me type.";
        await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
    }
}

其他資源

下一步