TL;DR
2023年6月15日時点では、go get github.com/line/line-bot-sdk-go
を実行すると、7.8がモジュールの管理対象になる。
v7.14でサポートされたFlex Messageの動画コンポーネントを使用するには、最新のモジュールをgetしてきて、import方法を変更する。
# go get github.com/line/line-bot-sdk-go/v7/linebot
go get github.com/line/line-bot-sdk-go/v7@7.14
#or
go get github.com/line/line-bot-sdk-go/v7@latest
import (
- "github.com/line/line-bot-sdk-go/linebot"
+ "github.com/line/line-bot-sdk-go/v7/linebot"
)
Ver7.14でFlex Message V3に対応した!!
FlexMessageの動画メッセージを作成している時のこと。
画像コンポーネントのFlexMessageはできたので、同じように作成できるだろと思って作っているとFlexComponentTypeVideo
が存在しないと言われた。
対応してないのかな〜と思っていると、2023年3月にv7.14が出ていて、そこでサポートされたと記載されていました。(ライブラリをぽちぽち使ってる身として、サポートしていただけることに頭が上がりません...)
が、go.modで管理されているのは7.8まででどうすれば良いのだろうと調査した結果、上記の対応で行けました。
実際の実装
Messaging APIのドキュメントにもありますが、FlexMessageの動画コンポーネントには色々制約があるので注意が必要です。
抜粋すると
- 再生可能なファイルであることかつ、範囲リクエストができること
- アスペクト比がプレビューと一致しない場合、予期せぬレイアウトになること
- 動画コンポーネントを使うには、以下の条件をすべて満たす必要があります。
- 動画コンポーネントをヒーローのブロック直下に指定する
- バブルのsizeプロパティに
kilo
mega
giga
のいずれかを指定する- バブルがカルーセルの子要素ではない
以下、ドキュメントです。
package line
import(
"github.com/line/line-bot-sdk-go/v7/linebot"
)
func NewFlexVideoMessage(videoUrl string, previewUrl string) linebot.SendingMessage {
return linebot.NewFlexMessage(
"Video Flex Message",
&linebot.BubbleContainer{
Type: linebot.FlexContainerTypeBubble,
Size: linebot.FlexBubbleSizeTypeMega,
Hero: &linebot.VideoComponent{
Type: linebot.FlexComponentTypeVideo,
URL: videoUrl,
PreviewURL: previewUrl,
AspectRatio: linebot.FlexVideoAspectRatioType1to1,
AltContent: &linebot.ImageComponent{
Type: linebot.FlexComponentTypeImage,
URL: preview,
Size: linebot.FlexImageSizeTypeFull,
AspectRatio: linebot.FlexImageAspectRatioType1to1,
},
},
},
)
}
後書き
こちらの記事の中でも書かれていますが、JSON -> FlexContainerに変換できる関数が実装されていますので簡単な実装であれば、JSONをぶん投げてもらうのもありかもしれません。
ライブラリを作成していただいる方々には頭が上がりません