2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

高専キャリアとマイクロソフトがコラボしたクラウドAI開発講座進捗報告[7]

Last updated at Posted at 2020-08-15

クラウドAI開発講座進捗報告- 7週目

これの続き

さあそろそろ8月終わりの締め切りが近づいてきました。
学校の夏休み課題、卒論等、8月の終わりは修羅場と化しそうなのは目に見えています。
そんな修羅場で確実に倒すのに時間がかかりそうな敵はこいつです(いい意味で!)。
なのである程度攻略のめどをつけておきたいわけです。
というわけで今週の進捗です!!!
なんだかブログ書くのが楽しくなってきてちょっとテンション高めです笑。

やったこと

1. Teamsで画像を読み込めないエラー

emulator上では読み込めてるんだけど、teams上では読み取れないっていう現象に陥っていた。
メンターさんが解決してくださった。
emulator上とteams上で画像の形式が違うっぽくて、専用のコードに書き換えたらできた!
manifest.jsonにsupportFiles=trueと追加する必要があります。
コードは以下参照

public async Task<List<string>> getPictureUrls()//pictureのstreamを取得する
        {
            List<string> urls = new List<string>();
            foreach( Attachment attachment in turnContext.Activity.Attachments)
            {
                bool messageWithFileDownloadInfo = attachment.ContentType == FileDownloadInfo.ContentType;
                if (messageWithFileDownloadInfo)
                {
                    var file = turnContext.Activity.Attachments[0];
                    var fileDownload = JObject.FromObject(file.Content).ToObject<FileDownloadInfo>();

                    string filePath = Path.Combine("Files", file.Name);//保存先

                    var client = _clientFactory.CreateClient();
                    var response = await client.GetAsync(fileDownload.DownloadUrl);
                    using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
                    {
                        await response.Content.CopyToAsync(fileStream);
                        urls.Add(filePath);
                    }
                }
            }
            return urls;
        }

これでできたんだけど今度はAzureのwebappにデプロイしたら動かなくなった。
これもメンターさんが解決してくださった。本当にありがたい!

webappにデプロイするファイルの中にFilesフォルダが含まれておらず、高度なツール>CMDからディレクトリにアクセスし、filesフォルダにアクセスすることで動くことが確認できた。

2. リアクションの取得

teamsのリアクション(いいねとか、ハートとか)を取得したかったので公式ドキュメントでしらべるとできるみたい。ただいろいろ調べたがどのメッセージに対してのリアクションなのかは判断できなくて単純にアクションに対応した文字列が取得できるだけ(たぶん)。
コードはこんな感じ。

public class TeamsFileUploadBot : TeamsActivityHandler
{
    protected override async Task OnMessageReactionActivityAsync(ITurnContext<IMessageReactionActivity> turnContext, System.Threading.CancellationToken cancellationToken)
        {
        //リアクションに対応した文字列取得
              String reactType = turnContext.Activity.ReactionsAdded[0].Type;
        }
}

3. コーディング

今の進捗はこんな感じです。
だいぶできてきましたね。完成度は70%くらいでしょうか。
さすがに何作ってるかはばれそう。
image.png

image.png

来週の予定

コーディング!!とりあえず基本的な機能は来週中に全部完成させたい。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?