3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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:

3
0
0

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
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?