0

我了解如何在作曲家之外的代码中执行此操作,但是有没有办法能够在作曲家中使用它?

有这个:How to get message id of sent message Bot Framework (Teams channel)? 但它不是来自作曲家。

4

1 回答 1

0

它必须在自定义操作中(如您所述),然后在结果属性中返回资源 Id,以便您可以在其他地方使用它。自定义操作的BeginDialogAsync方法是这样的:

public override async Task<DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken))
{
    var activity = Activity.CreateMessageActivity();

    //...

    var resource = await dc.Context.SendActivityAsync(activity);

    if (this.ResultProperty != null)
    {
        dc.State.SetValue(this.ResultProperty.GetValue(dc.State), result);
    }

    return await dc.EndDialogAsync(result: result, cancellationToken: cancellationToken);
}

更新

更新代码使用“ResultProperty”属性,就像自定义运行时中的示例自定义操作一样。这样,自定义操作将更加可重用。

于 2021-05-17T15:56:37.310 回答