Blueskyに投稿する(GAS使用+IFTTTとの連携)

画像を添付する

画像を添付する場合は当然画像のアップロード処理が必要になるのでPostするときのJSONを以下のように変更する。画像は最大4枚まで送れるのでimagesは配列。

ところが、com.atproto.repo.createRecordが受け付けているContent-Typeはapplication/jsonなのでこれで直接バイナリデータは送れない。

実際にrecord.embed.imagesに設定するべきデータは以下のようになっていて(altaspectRatioは任意)、

参照情報って何?と思うけど要するに「先に画像をアップロードして、その戻り値として参照情報(文字列型)を受け取れるので、それを設定する」という流れで処理をしなければならない。

なのでまずはcom.atproto.repo.createRecordで送る前にcom.atproto.repo.uploadBlobを使用して画像をアップロードする。

※ 以前は以下の仕様でしたが、2024/2/22頃から前述の新仕様でないとエラーになるように変更されたようです。

画像をアップロードする

今回作成するWebサービスは外部連携を想定していて、他サービスからの情報を受け取る際は画像に関してはURLで渡されてくるはずなので、「画像のURLを受け取ってそれをBLOBとして取得し、uploadBlobに送信する」ような処理にした。

投稿する

取得した画像参照情報をJSONに加えてPostする。

リンクカードを設定する

リンクカードを設定する場合は以下のように…

あれ?record.embedは配列じゃないんだけど…画像とリンクカードを同時に設定したい場合はどうすれば?

答えは画像とリンクカードを同時には指定できない。なのでどっちかにしてください。

サムネイル画像のアップロード方法とかは普通の画像添付のやつと一緒。