SDKを使用せず、
JSONObject`を使用してテキストリンクメッセージを作成する方法を説明します。
以下は、JSONObject
を使用してテキストリンクメッセージを作成し、LINEのMessaging APIに送信する例です:
import org.json.JSONObject;
import org.json.JSONArray;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class LineMessageSender {
private static final String LINE_MESSAGING_API = "https://api.line.me/v2/bot/message/push";
private static final String CHANNEL_ACCESS_TOKEN = "YOUR_CHANNEL_ACCESS_TOKEN";
public static void sendTextLinkMessage(String userId) throws Exception {
URL url = new URL(LINE_MESSAGING_API);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer " + CHANNEL_ACCESS_TOKEN);
con.setDoOutput(true);
JSONObject message = createTextLinkMessage();
JSONObject body = new JSONObject();
body.put("to", userId);
body.put("messages", new JSONArray().put(message));
try(OutputStream os = con.getOutputStream()) {
byte[] input = body.toString().getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}
int responseCode = con.getResponseCode();
System.out.println("Response Code : " + responseCode);
con.disconnect();
}
private static JSONObject createTextLinkMessage() {
JSONObject textLink = new JSONObject();
textLink.put("type", "text");
textLink.put("text", "ここをタップしてください");
JSONObject action = new JSONObject();
action.put("type", "postback");
action.put("label", "タップ");
action.put("displayText", "テキストがタップされました");
action.put("data", "action=tapped");
textLink.put("action", action);
JSONObject flexMessage = new JSONObject();
flexMessage.put("type", "flex");
flexMessage.put("altText", "テキストリンクの例");
JSONObject contents = new JSONObject();
contents.put("type", "bubble");
JSONObject body = new JSONObject();
body.put("type", "box");
body.put("layout", "vertical");
body.put("contents", new JSONArray().put(textLink));
contents.put("body", body);
flexMessage.put("contents", contents);
return flexMessage;
}
public static void main(String[] args) {
try {
sendTextLinkMessage("USER_ID");
} catch (Exception e) {
e.printStackTrace();
}
}
}
この実装では:
-
createTextLinkMessage()
メソッドで、JSONObject
を使用してFlex Messageを作成します。 - テキストリンクアクションを含むテキストコンポーネントを作成し、Flex Messageの本文に追加します。
-
sendTextLinkMessage()
メソッドで、作成したメッセージをLINE Messaging APIに送信します。
このコードを使用する際は、CHANNEL_ACCESS_TOKEN
を自分のチャンネルのアクセストークンに、USER_ID
を送信先のユーザーIDに置き換えてください。
この方法により、SDKを使用せずにJSONObject
を使ってテキストリンクメッセージを作成し、LINEのAPIに直接送信することができます[1][3][7]。
Citations:
[1] https://bito.ai/resources/create-json-object-java-json-explained/
[2] https://qiita.com/tatsuya1970/items/f9d03159915d4d009f04
[3] https://ioflood.com/blog/jsonobject-java-class/
[4] https://dev.classmethod.jp/articles/line-messaging-api-flex-message/
[5] https://qiita.com/course_k/items/a5b5392f21e7e8869f83
[6] https://knowledge.littlehelp.co.jp/ja/chatbot/message/flex-message
[7] https://www.freecodecamp.org/news/jsonobject-tostring-how-to-convert-json-to-a-string-in-java/
[8] https://www.oracle.com/technical-resources/articles/java/json.html
[9] https://gist.github.com/jirawatee/be0f0a51ae794fbb3680d49d1c110f34
[10] https://qiita.com/kakakaori830/items/52e52d969800de61ce28