📖
【LINE】MessagingApiのFlexMessageを送信処理について
概要
FlexMessageはメッセージのレイアウトをカスタマイズして送信することができる仕組み。
カード形式にしたり、ボタンを付けてリンクを設定することも可能です。
参考までに、javaで実装する際は複雑な多次元構造となるためObjectMapperでオブジェクトに詰めるとなると大変。
String.formatを使用して必要な個所を埋める処理にすれば楽に実装ができるのでおすすめ。
ソースコード
SampleService.java
/**
* LINEブロードキャストメッセージを配信する
* @param messasge メッセージ
* @return メッセージ送信OK:true メッセージ送信NG:false
* @throws IllegalArgumentException
* @throws IOException
*/
public Boolean sendLineBroadcastMessage() throws IllegalArgumentException, IOException {
// LineApiKeyを取得
String lineApiKey = "LINEで取得したAPIキー";
try {
// リクエスト先URLを設定(ブロードキャスト送信)
HttpPost httpPost = new HttpPost("https://api.line.me/v2/bot/message/broadcast");
// ヘッダー設定
httpPost.setHeader("Content-Type", "application/json");
httpPost.setHeader("Authorization", "Bearer " + lineApiKey);
String jsonStr = "{\"messages\":[{\"type\":\"flex\",\"altText\":\"通知に表示されるテキスト\",\"contents\":"
+ "{\"type\":\"bubble\",\"body\":{\"type\":\"box\",\"layout\":\"horizontal\",\"contents\":"
+ "[{\"type\":\"text\",\"text\":\"Hello,\"},{\"type\":\"text\",\"text\":\"%s\"}]}}}]}";
String json = String.format(jsonStr, "テストメッセージ");
// body設定
StringEntity params = new StringEntity(json, StandardCharsets.UTF_8);
httpPost.setEntity(params);
// リクエスト実行
CloseableHttpClient client = HttpClients.createDefault();
CloseableHttpResponse resp = client.execute(httpPost);
int statusCode = resp.getStatusLine().getStatusCode();
if(statusCode == 200) {
return true;
} else {
return null;
}
} catch(IllegalArgumentException | IOException e) {
throw e;
}
}
git
参考サイト
Jsonの形式やサービスの仕組みは以下から確認
公式サイトにてレイアウト作成のシミュレーションアプリが用意されております。
Jsonはそこで簡単に作成が可能です。
作成したJsonは以下サイトで1行に変更することができます。
Discussion