LoginSignup
0

line-bot-sdk-goのv7.14で追加されたFlexMessageの動画コンポーネントのインポート方法

Last updated at Posted at 2023-06-15

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
line.go
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のいずれかを指定する
    • バブルがカルーセルの子要素ではない

以下、ドキュメントです。

line.go
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をぶん投げてもらうのもありかもしれません。

ライブラリを作成していただいる方々には頭が上がりません :bow:

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
What you can do with signing up
0