Power Automateを使ってLINE Botに投稿された画像を取得して、
その画像をbase64文字列に変換するのに手こずったのでメモとして残します。
経緯
とある画像解析APIに画像を渡す際、受け付けてくれるフォーマットがbase64だった。
Power Automateで用意されているもの
既存の式にbase64のものが複数ありましたが、どれもbase64から変換するものばかりでした。
ほしいもの
バイナリ形式→base64にエンコードしてほしい!! と検索したものの情報が全くありませんでした。
情報取得
色々検索すると下記の情報に行き着きました。
内容は、自動的にbase64に変換されたものが返ってくるみたいです。
返ってくる形は以下のイメージ。この $content
の中身がほしい!!
{
"$content-type": "image/jpeg",
"$content": "/9j/4AAQSkZJRgABAQAAAQABAAD/......"
}
$contentを取得
変数文字列にHTTPで取得した画像バイナリの中身を取得します。
LINEに投稿された画像は下記のように設定すればバイナリデータを取得することができます。
項目 | 値 |
---|---|
①名前変更 | 「LINE画像取得」に変更しました |
②方法 | GET |
③URI | https://api.line.me/v2/bot/message/@{items('Apply_to_each')?['message']?['id']}/content |
④ヘッダー | AuthorizationとBearerにLINEのアクセストークンを明記 |
変数base64というものを用意して、そこに渡します。
値は下記の通り。途中にある LINE画像取得
はHTTPの名前を変えたので、ご自身の環境に合わせてください。
値にコピペすると反映されます。
@{body('LINE画像取得')?['$content']}
LINE画像取得の本文内にある $content
を取得します。
まとめ
@{body....}
の記述方法を見つけるのにとても苦労しました。
単純にbase64エンコードしてくれる式があればいいのにと思いました。