質問編集履歴

4

補足情報の修正

2023/04/19 15:08

投稿

guchi
guchi

スコア0

test CHANGED
File without changes
test CHANGED
@@ -98,6 +98,8 @@
98
98
  転送先を決定すると転送先にメッセージが送信されます。
99
99
  現状、そのメッセージが途中までしか送れていません。
100
100
 
101
+ アドレスバーに「[https://line.me/R/share?text=](url)」とURLエンコードしたメッセージが入力されますが、エンコードされているメッセージに日本語(集合や解散など)が含まれている点も気になります。(エンコードされているはずなのにアドレスバーにちゃんと反映されていない??)
102
+
101
103
  参考サイト:
102
104
  https://developers.line.biz/ja/docs/messaging-api/using-line-url-scheme/#sending-text-messages
103
105
 

3

タグ追加

2023/04/19 12:38

投稿

guchi
guchi

スコア0

test CHANGED
File without changes
test CHANGED
File without changes

2

詳細を記述

2023/04/19 12:36

投稿

guchi
guchi

スコア0

test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
  画面上のリンクをクリックしてLINEを開きます。
8
8
  リンクの指定、LINEを開く動作はJavaScript(JQuery)で実装しています。
9
+ テキストはLaravelのコントローラから取得しています。
9
10
 
10
11
  リンク先URL:https://line.me/R/share?text=
11
12
  テキスト:
@@ -32,36 +33,65 @@
32
33
  ### 該当のソースコード
33
34
 
34
35
  ```html
36
+ <span id="line" class="hidden" data-route="{{ route('line') }}"></span>
35
37
  <a class="send_to_line">
36
38
  ```
37
39
 
38
40
  ```javascript
39
41
  $(function () {
42
+ const route = $('#line').data("route");
43
+
40
44
  $('.send_to_line').on('click', function () {
41
- const text = '2023/4/1(土) 集合12:00 解散15:00\n' +
45
+ $.ajax({
42
- '集合場所:新宿御苑\n' +
46
+ type: "POST",
43
- '写真コンテストを開催します。奮ってご参加ください。\n' +
47
+ url: route,
44
- '\n' +
48
+ headers: {
45
- '・持参:カメラ、お弁当、やる気\n' +
46
- '・ご家族も一緒に参加OK\n' +
47
- '\n' +
48
- '詳細はこちら:https://**********/camera/contest/AAMMBBDD/';
49
+ 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
49
-
50
+ },
51
+ })
52
+ .done(function (text) {
53
+ const url = encodeURI(text);
50
- window.location.href = 'https://line.me/R/share?text=' + encodeURI(text);
54
+ window.location.href = 'https://line.me/R/share?text=' + url;
55
+ })
56
+ .fail(function () {
57
+ alert('error');
58
+ })
51
59
  });
52
60
  })
61
+ ```
62
+ ```php
63
+ Route::post('/line', [LineController::class, 'line'])
64
+ ->name('line');
65
+ ```
66
+ ```php
67
+ public function line(): string
68
+ {
69
+ $date = '2023/4/1(土) 集合12:00 解散15:00';
70
+ $venue = '集合場所:新宿御苑';
71
+ $gaiyo = '写真コンテストを開催します。奮ってご参加ください。';
72
+ $hosoku1 = '・持参:カメラ、お弁当、やる気';
73
+ $hosoku2 = '・ご家族も一緒に参加OK';
74
+ $url = '詳細はこちら:https://**********/camera/contest/AAMMBBDD/';
75
+
76
+ // テキスト表示用に連結
77
+ $text = $date . PHP_EOL . $venue . PHP_EOL . $gaiyo . PHP_EOL . PHP_EOL . $hosoku1 . PHP_EOL . $hosoku2 . PHP_EOL . PHP_EOL . $url;
78
+
79
+ return $text;
80
+ }
53
81
  ```
54
82
 
55
83
  ### 試したこと
56
84
 
57
85
  - 以下を試してみましたが、結果は同じでした。
58
- ```ここに言語を入力
86
+ ```javascript
59
87
  window.location.href = encodeURI('https://line.me/R/share?text=' + text);
60
88
  ```
61
89
 
62
90
  ### 補足情報(FW/ツールのバージョンなど)
63
91
  JQuery:3.6.3
64
92
  LINE:7.16.1.3000
93
+ Laravel9
94
+ PHP 8.1.2
65
95
 
66
96
  自分のローカル開発環境で試しているのでPC版のLINEで試しています。
67
97
  そのため実行するとLINEのQRコードが表示され、それをスマホのLINEで読み取るとスマホに転送先が表示されます。

1

JQueryとLINEのバージョン追記。試したことの内容を簡潔に変更。

2023/04/19 11:58

投稿

guchi
guchi

スコア0

test CHANGED
File without changes
test CHANGED
@@ -54,12 +54,14 @@
54
54
 
55
55
  ### 試したこと
56
56
 
57
- URLエンコードしていますが「/」がエンコードされていなかったりしたので、以下を試してみましたが、LINEに表示されるメッセージがデコードされないためダメでした。
57
+ - 以下を試してみましたが、結果は同じでした。
58
58
  ```ここに言語を入力
59
59
  window.location.href = encodeURI('https://line.me/R/share?text=' + text);
60
60
  ```
61
61
 
62
62
  ### 補足情報(FW/ツールのバージョンなど)
63
+ JQuery:3.6.3
64
+ LINE:7.16.1.3000
63
65
 
64
66
  自分のローカル開発環境で試しているのでPC版のLINEで試しています。
65
67
  そのため実行するとLINEのQRコードが表示され、それをスマホのLINEで読み取るとスマホに転送先が表示されます。