Help us understand the problem. What is going on with this article?

Power AutomateでLINEに投稿された画像のbase64文字列を取得する

Power Automateを使ってLINE Botに投稿された画像を取得して、
その画像をbase64文字列に変換するのに手こずったのでメモとして残します。

経緯

とある画像解析APIに画像を渡す際、受け付けてくれるフォーマットがbase64だった。

Power Automateで用意されているもの

既存の式にbase64のものが複数ありましたが、どれもbase64から変換するものばかりでした。

ほしいもの

バイナリ形式→base64にエンコードしてほしい!! と検索したものの情報が全くありませんでした。

情報取得

色々検索すると下記の情報に行き着きました。
内容は、自動的にbase64に変換されたものが返ってくるみたいです。

https://debajmecrm.com/binary-to-base64-in-microsoft-power-automate-microsoft-flow/

返ってくる形は以下のイメージ。この $content の中身がほしい!!

{
  "$content-type": "image/jpeg",
  "$content": "/9j/4AAQSkZJRgABAQAAAQABAAD/......"
}

$contentを取得

変数文字列にHTTPで取得した画像バイナリの中身を取得します。
LINEに投稿された画像は下記のように設定すればバイナリデータを取得することができます。

s100.png

項目
①名前変更 「LINE画像取得」に変更しました
②方法 GET
③URI https://api.line.me/v2/bot/message/@{items('Apply_to_each')?['message']?['id']}/content
④ヘッダー AuthorizationとBearerにLINEのアクセストークンを明記

変数base64というものを用意して、そこに渡します。

スクリーンショット 2020-10-14 18.12.35.png

値は下記の通り。途中にある LINE画像取得 はHTTPの名前を変えたので、ご自身の環境に合わせてください。
値にコピペすると反映されます。

@{body('LINE画像取得')?['$content']}

LINE画像取得の本文内にある $content を取得します。

まとめ

@{body....} の記述方法を見つけるのにとても苦労しました。
単純にbase64エンコードしてくれる式があればいいのにと思いました。

h-takauma
様々なIoT機器の研究開発を行っています。 AWSの研究開発がメインです。LINE API Expert('19〜) 最近はスマートスピーカーに夢中です! 著書「スマートスピーカーアプリ開発入門」https://amzn.to/2o0KGWs
i-enter
「効果」をつねに提供します。スマホアプリ開発No.1の実績。最新のIoTに対応した開発も行います。
https://www.i-enter.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away