傳送及接收文字訊息

適用于: SDK v4

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

大部分文字欄位都支援 Markdown,但是支援可能因通道而有所不同。

若要讓執行中的聊天機器人傳送和接收訊息,請遵循目錄上方的快速入門,或參閱關於聊天機器人運作方式的文件,這也會連結至可供您自己執行的簡單範例。

傳送文字訊息

若要傳送簡單的文字訊息,請指定要以活動的形式傳送的字串:

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

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

接收文字訊息

若要接收簡單的文字訊息,請使用 activity 物件的 text 屬性。

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

var responseMessage = turnContext.Activity.Text;

傳送輸入指標

使用者期望訊息可收到及時的回應。 如果 Bot 正在執行某些長時間執行的工作,例如呼叫伺服器或執行查詢,而未提供使用者 Bot 收到訊息的指示,使用者可能會不耐煩並傳送其他訊息,或以為 Bot 故障了。

網路聊天和 Direct Line 通道 Bot 可以支援傳送輸入指示,以向使用者顯示訊息已收到且正在進行處理。 請注意,您的 Bot 需要在 15 秒內結束回合,否則連接器服務將會逾時。 如需較長時間的流程,請參閱傳送主動式訊息的詳細資訊。

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

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);
    }
}

其他資源

後續步驟