更新しました
Bot Framework で 1 対 1 の会話を行う Skype ボットを開発しています。外部サービスから呼び出してボットにメッセージを送信する WebHook メソッドがあるという点で、ボットはそのメッセージを Skype ユーザーに送信します。
次のコードは、メッセージ コントローラーの v1 と api/messages post メソッドのコードです。
public async Task<Message> Post([FromBody]Message message){}
[Route("~/api/messages/hook")]
[HttpPost]
public async Task<IHttpActionResult> WebHook([FromBody]WebHookMessage message)
{
if (message.Type == "EmotionUpdate")
{
const string fromBotAddress = "<Skype Bot ID here>";
const string toBotAddress = "<Destination Skype name here>";
var text = resolveEmoji(message.Data);
using (var client = new ConnectorClient())
{
var outMessage = new Message
{
To = new ChannelAccount("skype", address: toBotAddress , isBot: false),
From = new ChannelAccount("skype", address: $"8:{fromBotAddress}", isBot: true),
Text = text,
Language = "en",
};
await client.Messages.SendMessageAsync(outMessage);
}
}
return Ok();
}
上記の WebHook を別のサービスから呼び出して、ボットがそれぞれの Skype ユーザーにメッセージを送信できるようにします。
V3ボットフレームワークで同じことを達成するにはどうすればよいですか? 私は次のことを試しましたが、うまくいきませんでした
const string fromBotAddress = "Microsoft App ID of my bot";
const string toBotAddress = "skype username";
WebHookMessage processedData = JsonConvert.DeserializeObject<WebHookMessage>(message);
var text = resolveEmoji(processedData.Data);
using (var client = new ConnectorClient(new Uri("https://botname.azurewebsites.net/")
, "Bot Microsoft App Id", "Bot Microsoft App secret",null))
{
var outMessage = new Activity
{
ReplyToId = toBotAddress,
From = new ChannelAccount("skype", $"8:{fromBotAddress}"),
Text = text
};
await client.Conversations.SendToConversationAsync(outMessage);
}
しかし、それは機能していません。最終的に私が達成したいのは、スカイプの人にメッセージを送信する方法をいつでもボットにユーザーに送信させることです。