👏

【LINE】MessagingAPIのブロードキャストの使い方

2022/04/09に公開

概要

LINE公式アカウントを友だち追加しているユーザーにメッセージを送信する処理。

ソースコード

SampleService.java
    /**
     * LINEメッセージを送りたい時に使用する 
     * @param messasge メッセージ
     * @return メッセージ送信OK:true メッセージ送信NG:false
     * @throws IllegalArgumentException
     * @throws IOException
     */
    public Boolean sendLineMessages(String message) 
	    throws IllegalArgumentException, IOException {

        // LineApiKeyを取得
        String lineApiKey = "LINEで取得したAPIキー";
        ObjectMapper objMapper = new ObjectMapper();
        
        try {
            
            List<LineObjMessageDetails> lineObjMessageDetailsList = new ArrayList<>();
            
            // メッセージオブジェクト生成
            LineObjMessageDetails lineObjMessageDetails = new LineObjMessageDetails();
            lineObjMessageDetails.setType("text");
            lineObjMessageDetails.setText(message);
            
            // メッセージオブジェクトリストを生成
            lineObjMessageDetailsList.add(lineObjMessageDetails);
            LineObjMessages lineObjMessages = new LineObjMessages();
            lineObjMessages.setMessages(lineObjMessageDetailsList);
            
            // オブジェクト→Json変換
            String lineObjMessagesJson = objMapper.writeValueAsString(lineObjMessages);

            // リクエスト先URLを設定
            HttpPost httpPost = new HttpPost("https://api.line.me/v2/bot/message/broadcast");
            
            // ヘッダー設定
            httpPost.setHeader("Content-Type", "application/json");
            httpPost.setHeader("Authorization", "Bearer " + lineApiKey);

            // body設定
            StringEntity params = new StringEntity(lineObjMessagesJson, 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;
        }
    }
LineObjMessageDetails.java
@Data
public class LineObjMessageDetails {
    
    /** メッセージ種別 */
    private String type;
    /** メッセージ */
    private String text;

}
LineObjMessages.java
@Data
public class LineObjMessages {
    /** メッセージリスト */
    private List<LineObjMessageDetails> messages;

}

git

https://gitlab.com/nk19940709nk/nakaiproject/-/tree/main/ZennProject/src

公式サイト

https://developers.line.biz/ja/reference/messaging-api/#get-narrowcast-progress-status

Discussion