Created
September 6, 2019 06:35
-
-
Save taichunmin/dd8cc28b858864615854009cedd1dc89 to your computer and use it in GitHub Desktop.
LINE Messaging API reference 20190729 vs 20190906
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <div class="Main Reference Reference-hasSide"> | |
| <div class="Content"> | |
| <div class="ReferenceCodesSide"></div> | |
| <ul class="BreadCrumb"> | |
| <li><a href="/en/"><span>LINE Developers</span></a></li> | |
| <li><a href="/en/reference/"><span>API references</span></a></li> | |
| <li class="current">Messaging API reference</li> | |
| </ul> | |
| <div class="Article"> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h1 class="h1-document">Messaging API reference</h1> | |
| <div class="TabGroup"> | |
| <ul class="Tabs ReferenceCodesNavi"> | |
| <li class="Tab js-current"><a href="#" data-tab="shell">shell</a></li> | |
| <li class="Tab"><a href="#" data-tab="java">java</a></li> | |
| <li class="Tab"><a href="#" data-tab="ruby">ruby</a></li> | |
| <li class="Tab"><a href="#" data-tab="go">go</a></li> | |
| <li class="Tab"><a href="#" data-tab="php">php</a></li> | |
| <li class="Tab"><a href="#" data-tab="perl">perl</a></li> | |
| <li class="Tab"><a href="#" data-tab="python">python</a></li> | |
| <li class="Tab"><a href="#" data-tab="nodejs">node.js</a></li> | |
| </ul> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="common-specifications" class="h2 h2">Common specifications</h2> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="rate-limits" class="h3 h3">Rate limits</h3> | |
| <p>Rate limits for Messaging API requests are as follows. These limits are applied to each endpoint.</p> | |
| <p>Different rate limits are applied depending on the applied plan.</p> | |
| <h4 id="for-bots-associated-with-line-official-accounts" class="h4 h4">For bots associated with LINE official | |
| accounts</h4> | |
| <table class="Table"> | |
| <colgroup> | |
| <col data-u-col="5"> | |
| <col data-u-col="7"> | |
| </colgroup> | |
| <tbody> | |
| <tr> | |
| <th style="word-break: normal"> | |
| <p><a href="/en/reference/messaging-api/#send-multicast-message">Send multicast message</a> </p> | |
| </th> | |
| <td style="word-break: normal"> | |
| <p>100,000 requests per minute<br> | |
| 2,000,000 recipients per minute </p> | |
| </td> | |
| </tr> | |
| <tr> | |
| <th style="word-break: normal"> | |
| <p><a href="/en/reference/messaging-api/#send-broadcast-message">Send broadcast message</a><br> | |
| <a href="/en/reference/messaging-api/#get-number-of-delivery-messages">Get number of message | |
| deliveries</a><br> | |
| <a href="/en/reference/messaging-api/#get-number-of-followers">Get number of followers</a><br> | |
| <a href="/en/reference/messaging-api/#get-demographic">Get friend demographics</a> </p> | |
| </th> | |
| <td style="word-break: normal"> | |
| <p>60 requests per hour </p> | |
| </td> | |
| </tr> | |
| <tr> | |
| <th style="word-break: normal"> | |
| <p>Other API endpoints </p> | |
| </th> | |
| <td style="word-break: normal"> | |
| <p>100,000 requests per minute </p> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="for-bots-associated-with-line-accounts" class="h4 h4">For bots associated with LINE@ accounts</h4> | |
| <table class="Table"> | |
| <colgroup> | |
| <col data-u-col="5"> | |
| <col data-u-col="7"> | |
| </colgroup> | |
| <tbody> | |
| <tr> | |
| <th style="word-break: normal"> | |
| <p><a href="/en/reference/messaging-api/#send-multicast-message">Send multicast message</a> </p> | |
| </th> | |
| <td style="word-break: normal"> | |
| <p>10,000 requests per minute<br> | |
| 200,000 recipients per minute </p> | |
| </td> | |
| </tr> | |
| <tr> | |
| <th style="word-break: normal"> | |
| <p>Other API endpoints </p> | |
| </th> | |
| <td style="word-break: normal"> | |
| <p>10,000 requests per minute </p> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="status-codes" class="h3 h3">Status codes</h3> | |
| <p>The following status codes are returned by the Messaging API.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Status code</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">200 OK</td> | |
| <td style="word-break: normal">Request successful</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">400 Bad Request</td> | |
| <td style="word-break: normal">Problem with the request</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">401 Unauthorized</td> | |
| <td style="word-break: normal">Valid channel access token is not specified</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">403 Forbidden</td> | |
| <td style="word-break: normal">Not authorized to access the resource. Confirm that your account or plan | |
| is authorized to access the resource.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">429 Too Many Requests</td> | |
| <td style="word-break: normal">Exceeded the <a href="#rate-limits">rate limit</a> for API calls</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">500 Internal Server Error</td> | |
| <td style="word-break: normal">Error on the internal server</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="response-headers" class="h3 h3">Response headers</h3> | |
| <p>The following HTTP headers are included in Messaging API responses.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Response header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">X-Line-Request-Id</td> | |
| <td style="word-break: normal">ID generated for each request</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="error-responses" class="h3 h3">Error responses</h3> | |
| <p>The following JSON data is returned in the response body when an error occurs.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">message</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Message containing information about the error. For more details, see <a | |
| href="#error-messages">Error messages</a>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">details[].message</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Details of the error. Not returned in certain situations.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">details[].property</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Location of where the error occurred. Not returned in certain situations. | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="error-messages" class="h4 h4">Error messages</h4> | |
| <p>The main error messages that are found in the <code>message</code> property of the JSON error responses are | |
| shown below.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Message</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">The request body has X error(s)</td> | |
| <td style="word-break: normal">An error was found in the JSON data of the request body. The number of | |
| errors is displayed for "X". Further details are shown in the <code>details[].message</code> and | |
| <code>details[].property</code> properties.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Invalid reply token</td> | |
| <td style="word-break: normal">An invalid reply token was used in the reply message</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">The property, XXX, in the request body is invalid (line: XXX, column: | |
| XXX)</td> | |
| <td style="word-break: normal">An invalid property was specified in the request body. The specific | |
| property is displayed for "XXX".</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">The request body could not be parsed as JSON (line: XXX, column: XXX) | |
| </td> | |
| <td style="word-break: normal">The JSON in the request body could not be parsed. The specific line and | |
| column are displayed.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">The content type, XXX, is not supported</td> | |
| <td style="word-break: normal">A content type not supported by the API is requested.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Authentication failed due to the following reason: XXX</td> | |
| <td style="word-break: normal">Authentication failed when the API was called. The reason is displayed | |
| for "XXX".</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Access to this API is not available for your account</td> | |
| <td style="word-break: normal">Appears when calling an API that you do not have permission to use.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Failed to send messages</td> | |
| <td style="word-break: normal">Appears when the message fails to be sent. One reason this may appear is | |
| if the user ID specified does not exist.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">You have reached your monthly limit.</td> | |
| <td style="word-break: normal">You have exceeded the target limit for additional messages.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example error response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"message"</span><span class="p">:</span><span class="s2">"The request body has 2 error(s)"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"details"</span><span class="p">:[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"message"</span><span class="p">:</span><span class="s2">"May not be empty"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"property"</span><span class="p">:</span><span class="s2">"messages[0].text"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"message"</span><span class="p">:</span><span class="s2">"Must be one of the following values: [text, image, video, audio, location, sticker, template, imagemap]"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"property"</span><span class="p">:</span><span class="s2">"messages[1].type"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="webhooks" class="h2 h2">Webhooks</h2> | |
| <h3 id="introduction" class="h3 h3">Introduction</h3> | |
| <p>When an event, such as when a user adds your LINE official account or sends a message, is triggered, an | |
| HTTPS POST request is sent to the webhook URL that is configured for your channel on the <a | |
| href="/console/">console</a>.</p> | |
| <p>Your bot server then receives and handles the requests.</p> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="request-headers" class="h3 h3">Request headers</h3> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">X-Line-Signature</td> | |
| <td style="word-break: normal">Used for <a href="#signature-validation">signature validation</a> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="request-body" class="h3 h3">Request body</h3> | |
| <p>The request body contains a JSON object with the user ID of a bot that should receive webhook events and an | |
| array of <a href="#webhook-event-objects">webhook event objects</a>.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">destination</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">User ID of a bot that should receive webhook events. The user ID value is | |
| a string that matches the regular expression, <code>U[0-9a-f]{32}</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">events</td> | |
| <td style="word-break: normal">Array of <a href="#webhook-event-objects">webhook event objects</a> | |
| </td> | |
| <td style="word-break: normal">Information about the event</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="response" class="h3 h3">Response</h3> | |
| <p>Your bot server should return the status code <code>200</code> for a HTTP POST request sent by a webhook. | |
| </p> | |
| <aside class="notice"> | |
| HTTP POST requests sent by a webhook are not resent if the request fails. | |
| </aside> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="signature-validation" class="h3 h3">Signature validation</h3> | |
| <p>The signature in the <code>X-Line-Signature</code> request header must be verified to confirm that the | |
| request was sent from the LINE Platform.</p> | |
| <p>Authentication is performed as follows:</p> | |
| <ol class="decimal"> | |
| <li>With the channel secret as the secret key, your application retrieves the digest value in the request | |
| body created using the HMAC-SHA256 algorithm.</li> | |
| <li>The server confirms that the signature in the request header matches the digest value which is Base64 | |
| encoded.</li> | |
| </ol> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example of signature validation</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code><span class="c"># Click on the language tabs for examples of signature validation</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="n">String</span> <span class="n">channelSecret</span> <span class="o">=</span> <span class="o">...;</span> <span class="c1">// Channel secret string</span> | |
| <span class="n">String</span> <span class="n">httpRequestBody</span> <span class="o">=</span> <span class="o">...;</span> <span class="c1">// Request body string</span> | |
| <span class="n">SecretKeySpec</span> <span class="n">key</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SecretKeySpec</span><span class="o">(</span><span class="n">channelSecret</span><span class="o">.</span><span class="na">getBytes</span><span class="o">(),</span> <span class="s">"HmacSHA256"</span><span class="o">);</span> | |
| <span class="n">Mac</span> <span class="n">mac</span> <span class="o">=</span> <span class="n">Mac</span><span class="o">.</span><span class="na">getInstance</span><span class="o">(</span><span class="s">"HmacSHA256"</span><span class="o">);</span> | |
| <span class="n">mac</span><span class="o">.</span><span class="na">init</span><span class="o">(</span><span class="n">key</span><span class="o">);</span> | |
| <span class="kt">byte</span><span class="o">[]</span> <span class="n">source</span> <span class="o">=</span> <span class="n">httpRequestBody</span><span class="o">.</span><span class="na">getBytes</span><span class="o">(</span><span class="s">"UTF-8"</span><span class="o">);</span> | |
| <span class="n">String</span> <span class="n">signature</span> <span class="o">=</span> <span class="n">Base64</span><span class="o">.</span><span class="na">encodeBase64String</span><span class="o">(</span><span class="n">mac</span><span class="o">.</span><span class="na">doFinal</span><span class="o">(</span><span class="n">source</span><span class="o">));</span> | |
| <span class="c1">// Compare X-Line-Signature request header string and the signature</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="no">CHANNEL_SECRET</span> <span class="o">=</span> <span class="o">...</span> <span class="c1"># Channel secret string</span> | |
| <span class="n">http_request_body</span> <span class="o">=</span> <span class="n">request</span><span class="p">.</span><span class="nf">raw_post</span> <span class="c1"># Request body string</span> | |
| <span class="nb">hash</span> <span class="o">=</span> <span class="no">OpenSSL</span><span class="o">::</span><span class="no">HMAC</span><span class="o">::</span><span class="n">digest</span><span class="p">(</span><span class="no">OpenSSL</span><span class="o">::</span><span class="no">Digest</span><span class="o">::</span><span class="no">SHA256</span><span class="p">.</span><span class="nf">new</span><span class="p">,</span> <span class="no">CHANNEL_SECRET</span><span class="p">,</span> <span class="n">http_request_body</span><span class="p">)</span> | |
| <span class="n">signature</span> <span class="o">=</span> <span class="no">Base64</span><span class="p">.</span><span class="nf">strict_encode64</span><span class="p">(</span><span class="nb">hash</span><span class="p">)</span> | |
| <span class="c1"># Compare X-Line-Signature request header string and the signature</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="k">defer</span><span class="x"> </span><span class="n">req</span><span class="o">.</span><span class="n">Body</span><span class="o">.</span><span class="n">Close</span><span class="p">()</span><span class="x"> | |
| </span><span class="n">body</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">ioutil</span><span class="o">.</span><span class="n">ReadAll</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">Body</span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="c">// ...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">decoded</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">base64</span><span class="o">.</span><span class="n">StdEncoding</span><span class="o">.</span><span class="n">DecodeString</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">Header</span><span class="o">.</span><span class="n">Get</span><span class="p">(</span><span class="s">"X-Line-Signature"</span><span class="p">))</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="c">// ...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">hash</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">hmac</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="n">sha256</span><span class="o">.</span><span class="n">New</span><span class="p">,</span><span class="x"> </span><span class="p">[]</span><span class="kt">byte</span><span class="p">(</span><span class="s">"<channel secret>"</span><span class="p">))</span><span class="x"> | |
| </span><span class="n">hash</span><span class="o">.</span><span class="n">Write</span><span class="p">(</span><span class="n">body</span><span class="p">)</span><span class="x"> | |
| </span><span class="c">// Compare decoded signature and `hash.Sum(nil)` by using `hmac.Equal`</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$channelSecret</span> <span class="o">=</span> <span class="o">...</span><span class="p">;</span> <span class="c1">// Channel secret string | |
| </span><span class="nv">$httpRequestBody</span> <span class="o">=</span> <span class="o">...</span><span class="p">;</span> <span class="c1">// Request body string | |
| </span><span class="nv">$hash</span> <span class="o">=</span> <span class="nb">hash_hmac</span><span class="p">(</span><span class="s1">'sha256'</span><span class="p">,</span> <span class="nv">$httpRequestBody</span><span class="p">,</span> <span class="nv">$channelSecret</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span> | |
| <span class="nv">$signature</span> <span class="o">=</span> <span class="nb">base64_encode</span><span class="p">(</span><span class="nv">$hash</span><span class="p">);</span> | |
| <span class="c1">// Compare X-Line-Signature request header string and the signature | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="k">use</span> <span class="nn">Digest::</span><span class="nv">SHA</span> <span class="s">'hmac_sha256'</span><span class="p">;</span> | |
| <span class="k">use</span> <span class="nn">MIME::</span><span class="nv">Base64</span> <span class="s">'encode_base64'</span><span class="p">;</span> | |
| <span class="k">my</span> <span class="nv">$channel_secret</span><span class="o">=</span> <span class="o">...</span> <span class="c1"># Channel secret string</span> | |
| <span class="k">my</span> <span class="nv">$http_body</span> <span class="o">=</span> <span class="o">...</span> <span class="c1"># Request body string</span> | |
| <span class="k">my</span> <span class="nv">$signature</span> <span class="o">=</span> <span class="nv">encode_base64</span><span class="p">(</span><span class="nv">hmac_sha256</span><span class="p">(</span><span class="nv">$http_body</span><span class="p">,</span> <span class="nv">$channel_secret</span><span class="p">));</span> | |
| <span class="c1"># Compare X-Line-Signature request header string and the signature</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="kn">import</span> <span class="nn">base64</span> | |
| <span class="kn">import</span> <span class="nn">hashlib</span> | |
| <span class="kn">import</span> <span class="nn">hmac</span> | |
| <span class="n">channel_secret</span> <span class="o">=</span> <span class="o">...</span> <span class="c"># Channel secret string</span> | |
| <span class="n">body</span> <span class="o">=</span> <span class="o">...</span> <span class="c"># Request body string</span> | |
| <span class="nb">hash</span> <span class="o">=</span> <span class="n">hmac</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">channel_secret</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">'utf-8'</span><span class="p">),</span> | |
| <span class="n">body</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">'utf-8'</span><span class="p">),</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">sha256</span><span class="p">)</span><span class="o">.</span><span class="n">digest</span><span class="p">()</span> | |
| <span class="n">signature</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64encode</span><span class="p">(</span><span class="nb">hash</span><span class="p">)</span> | |
| <span class="c"># Compare X-Line-Signature request header and the signature</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="kd">const</span> <span class="nx">crypto</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'crypto'</span><span class="p">);</span> | |
| <span class="kd">const</span> <span class="nx">channelSecret</span> <span class="o">=</span> <span class="p">...;</span> <span class="c1">// Channel secret string</span> | |
| <span class="kd">const</span> <span class="nx">body</span> <span class="o">=</span> <span class="p">...;</span> <span class="c1">// Request body string</span> | |
| <span class="kd">const</span> <span class="nx">signature</span> <span class="o">=</span> <span class="nx">crypto</span> | |
| <span class="p">.</span><span class="nx">createHmac</span><span class="p">(</span><span class="s1">'SHA256'</span><span class="p">,</span> <span class="nx">channelSecret</span><span class="p">)</span> | |
| <span class="p">.</span><span class="nx">update</span><span class="p">(</span><span class="nx">body</span><span class="p">).</span><span class="nx">digest</span><span class="p">(</span><span class="s1">'base64'</span><span class="p">);</span> | |
| <span class="c1">// Compare X-Line-Signature request header and the signature</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="webhook-event-objects" class="h2 h2">Webhook event objects</h2> | |
| <p>JSON objects which contain events generated on the LINE Platform.</p> | |
| <ul> | |
| <li> | |
| <a href="#common-properties">Common properties</a> | |
| <ul> | |
| <li><a href="#source-user">Source user</a></li> | |
| <li><a href="#source-group">Source group</a></li> | |
| <li><a href="#source-room">Source room</a></li> | |
| </ul> | |
| </li> | |
| <li> | |
| <a href="#message-event">Message event</a> | |
| <ul> | |
| <li><a href="#wh-text">Text</a></li> | |
| <li><a href="#wh-image">Image</a></li> | |
| <li><a href="#wh-video">Video</a></li> | |
| <li><a href="#wh-audio">Audio</a></li> | |
| <li><a href="#wh-file">File</a></li> | |
| <li><a href="#wh-location">Location</a></li> | |
| <li><a href="#wh-sticker">Sticker</a></li> | |
| </ul> | |
| </li> | |
| <li><a href="#follow-event">Follow event</a></li> | |
| <li><a href="#unfollow-event">Unfollow event</a></li> | |
| <li><a href="#join-event">Join event</a></li> | |
| <li><a href="#leave-event">Leave event</a></li> | |
| <li><a href="#member-joined-event">Member join event</a></li> | |
| <li><a href="#member-left-event">Member leave event</a></li> | |
| <li><a href="#postback-event">Postback event</a></li> | |
| <li><a href="#beacon-event">Beacon event</a></li> | |
| <li><a href="#account-link-event">Account link event</a></li> | |
| <li><a href="#device-link-event">Device link event</a></li> | |
| <li><a href="#device-unlink-event">Device unlink event</a></li> | |
| <li><a href="#scenario-result-event">LINE Things scenario execution event</a></li> | |
| </ul> | |
| <p>Some properties of these event objects might not have any value. Generated event objects don't contain | |
| properties without any value.</p> | |
| <p>The structure of these event objects might be changed when the Messaging API feature is updated. Such | |
| changes can include adding properties, changing the order of properties, adding or deleting spaces and | |
| newlines between data elements, and so on. Implement your server so as not to fail in receiving event | |
| objects whose structure has changed in the future.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example webhook event object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"destination"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxxxxxxxxx"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"events"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0f3779fba3b349968c5d07db31eab56f"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"325708"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Hello, world"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"8cf9239d56244f4197887e939187e19e"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"follow"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="common-properties" class="h3 h3">Common properties</h3> | |
| <p>The following properties are found in webhook event objects.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Identifier for the type of event</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">timestamp</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Time of the event in milliseconds</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">source</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td style="word-break: normal">Source <a href="#source-user">user</a>, <a | |
| href="#source-group">group</a>, or <a href="#source-room">room</a> object with information about the | |
| source of the event.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="source-user" class="h4 h4">Source user</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>user</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">ID of the source user</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Source user example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="w"> </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="source-group" class="h4 h4">Source group</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>group</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">groupId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">ID of the source group</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">ID of the source user. Only included in <a href="#message-event">message | |
| events</a>. Users of LINE version 7.4.x or earlier are not included in <code>userId</code>. For more | |
| information, see <a href="/en/docs/messaging-api/user-consent/">User consent</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Source group example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="w"> </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"group"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"groupId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Ca56f94637c..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="source-room" class="h4 h4">Source room</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>room</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">roomId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">ID of the source room</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">ID of the source user. Only included in <a href="#message-event">message | |
| events</a>. Users of LINE version 7.4.x or earlier are not included in <code>userId</code>. For more | |
| information, see <a href="/en/docs/messaging-api/user-consent/">User consent</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Source room example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="w"> </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"room"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"roomId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Ra8dbf4673c..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="message-event" class="h3 h3">Message event</h3> | |
| <p>Webhook event object which contains the sent message. | |
| The <code>message</code> property contains a message object which corresponds with the message type. You can | |
| reply to message events.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>message</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">replyToken</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Token for replying to the event</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">message</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td style="word-break: normal">Object containing the contents of the message. Message types include: | |
| <ul> | |
| <li><a href="#wh-text">Text</a></li> | |
| <li><a href="#wh-image">Image</a></li> | |
| <li><a href="#wh-video">Video</a></li> | |
| <li><a href="#wh-audio">Audio</a></li> | |
| <li><a href="#wh-file">File</a></li> | |
| <li><a href="#wh-location">Location</a></li> | |
| <li><a href="#wh-sticker">Sticker</a></li> | |
| </ul> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="wh-text" class="h4 h4">Text</h4> | |
| <p>Message object which contains the text sent from the source.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">id</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Message ID</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>text</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">text</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Message text</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Text message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"325708"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Hello, world!"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="wh-image" class="h4 h4">Image</h4> | |
| <p>Message object which contains the image content sent from the source.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">id</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Message ID</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>image</code></td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">contentProvider.type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Provider of the image file. | |
| <ul> | |
| <li> | |
| <code>line</code>: The image was sent by a LINE user. The binary image data can be retrieved from | |
| the <a href="#get-content"><code>content</code></a> endpoint.</li> | |
| <li> | |
| <code>external</code>: The image was sent using the LIFF <code>liff.sendMessages()</code> method. | |
| For more information, see <a href="/en/reference/liff/#send-messages">liff.sendMessages()</a> in | |
| the LIFF API reference.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">contentProvider.originalContentUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">URL of the image file. Only included when contentProvider.type is | |
| <code>external</code>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">contentProvider.previewImageUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">URL of the preview image. Only included when contentProvider.type is | |
| <code>external</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Image message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"325708"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"image"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contentProvider"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"line"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="wh-video" class="h4 h4">Video</h4> | |
| <p>Message object which contains the video content sent from the source. The preview image is displayed in the | |
| chat and the video is played when the image is tapped.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">id</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Message ID</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>video</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">duration</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Length of video file (milliseconds)</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">contentProvider.type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Provider of the video file. | |
| <ul> | |
| <li> | |
| <code>line</code>: The video was sent by a LINE user. The binary video data can be retrieved from | |
| the <a href="#get-content"><code>content</code></a> endpoint.</li> | |
| <li> | |
| <code>external</code>: The video was sent using the LIFF <code>liff.sendMessages()</code> method. | |
| For more information, see <a href="/en/reference/liff/#send-messages">liff.sendMessages()</a> in | |
| the LIFF API reference.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">contentProvider.originalContentUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">URL of the video file. Only included when contentProvider.type is | |
| <code>external</code>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">contentProvider.previewImageUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">URL of the preview image. Only included when contentProvider.type is | |
| <code>external</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Video message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"325708"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"video"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"duration"</span><span class="p">:</span><span class="w"> </span><span class="mi">60000</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contentProvider"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"external"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"originalContentUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/original.mp4"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"previewImageUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/preview.jpg"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="wh-audio" class="h4 h4">Audio</h4> | |
| <p>Message object which contains the audio content sent from the source.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">id</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Message ID</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>audio</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">duration</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Length of audio file (milliseconds)</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">contentProvider.type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Provider of the audio file. | |
| <ul> | |
| <li> | |
| <code>line</code>: The audio file was sent by a LINE user. The binary audio data can be retrieved | |
| from the <a href="#get-content"><code>content</code></a> endpoint.</li> | |
| <li> | |
| <code>external</code>: The audio file was sent using the LIFF <code>liff.sendMessages()</code> | |
| method. For more information, see <a | |
| href="/en/reference/liff/#send-messages">liff.sendMessages()</a> in the LIFF API reference.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">contentProvider.originalContentUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">URL of the audio file. Only included when contentProvider.type is | |
| <code>external</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Audio message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"325708"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"audio"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"duration"</span><span class="p">:</span><span class="w"> </span><span class="mi">60000</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contentProvider"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"line"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="wh-file" class="h4 h4">File</h4> | |
| <p>Message object which contains the file sent from the source. The binary data can be retrieved from the <a | |
| href="#get-content"><code>content</code></a> endpoint.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">id</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Message ID</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>file</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">fileName</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">File name</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">fileSize</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">File size in bytes</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> File message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"325708"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"file"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"fileName"</span><span class="p">:</span><span class="w"> </span><span class="s2">"file.txt"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"fileSize"</span><span class="p">:</span><span class="w"> </span><span class="mi">2138</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="wh-location" class="h4 h4">Location</h4> | |
| <p>Message object which contains the location data sent from the source.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">id</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Message ID</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>location</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">title</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Title</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">address</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Address</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">latitude</td> | |
| <td class=" nowrap" style="word-break: normal">Decimal</td> | |
| <td class=" nowrap" style="word-break: normal">Latitude</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">longitude</td> | |
| <td class=" nowrap" style="word-break: normal">Decimal</td> | |
| <td class=" nowrap" style="word-break: normal">Longitude</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Location message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"325708"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"location"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"my location"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"〒150-0002 東京都渋谷區渋谷2丁目21−1"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"latitude"</span><span class="p">:</span><span class="w"> </span><span class="mf">35.65910807942215</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"longitude"</span><span class="p">:</span><span class="w"> </span><span class="mf">139.70372892916203</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="wh-sticker" class="h4 h4">Sticker</h4> | |
| <p>Message object which contains the sticker data sent from the source. | |
| For a list of basic LINE stickers and sticker IDs, see <a | |
| href="/media/messaging-api/sticker_list.pdf">sticker list</a>.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">id</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Message ID</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>sticker</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">packageId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Package ID</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">stickerId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Sticker ID</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Sticker message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"325708"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sticker"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"packageId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"stickerId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="follow-event" class="h3 h3">Follow event</h3> | |
| <p>Event object for when your LINE official account is added as a friend (or unblocked). You can reply to | |
| follow events.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>follow</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">replyToken</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Token for replying to this event</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Follow event example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"follow"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="unfollow-event" class="h3 h3">Unfollow event</h3> | |
| <p>Event object for when your LINE official account is blocked.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>unfollow</code></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Unfollow event example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"unfollow"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="join-event" class="h3 h3">Join event</h3> | |
| <p>Event object for when your LINE official account joins a group or room. You can reply to join events.</p> | |
| <p>A join event is triggered at different times for groups and rooms. </p> | |
| <ul> | |
| <li>For groups: A join event is sent when a user invites your LINE official account. </li> | |
| <li>For rooms: A join event is sent when the first event (for example when a user sends a message or is | |
| added to the room) occurs after your LINE official account is added.</li> | |
| </ul> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>join</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">replyToken</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Token for replying to this event</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Join event example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"join"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"group"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"groupId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C4af4980629..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="leave-event" class="h3 h3">Leave event</h3> | |
| <p>Event object for when a user removes your LINE official account from a <a | |
| href="/en/docs/messaging-api/group-chats/#group">group</a> or when your LINE official account leaves a <a | |
| href="/en/docs/messaging-api/group-chats/#group">group</a> or <a | |
| href="/en/docs/messaging-api/group-chats/#room">room</a>.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>leave</code></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Leave event example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"leave"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"group"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"groupId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C4af4980629..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="member-joined-event" class="h3 h3">Member join event</h3> | |
| <p>Event object for when a user joins a <a href="/en/docs/messaging-api/group-chats/#group">group</a> or <a | |
| href="/en/docs/messaging-api/group-chats/#room">room</a> that the LINE official account is in.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal"><code>memberJoined</code></td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">joined.members</td> | |
| <td style="word-break: normal">Array of <a href="#source-user">source user</a> objects</td> | |
| <td style="word-break: normal">User ID of users who joined</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">replyToken</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Token for replying to this event</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Member join event example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0f3779fba3b349968c5d07db31eabf65"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"memberJoined"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"group"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"groupId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"joined"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"members"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U91eeaf62d9..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="member-left-event" class="h3 h3">Member leave event</h3> | |
| <p>Event object for when a user leaves a <a href="/en/docs/messaging-api/group-chats/#group">group</a> or <a | |
| href="/en/docs/messaging-api/group-chats/#room">room</a> that the LINE official account is in.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>memberLeft</code></td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">left.members</td> | |
| <td style="word-break: normal">Array of <a href="#source-user">source user</a> objects</td> | |
| <td style="word-break: normal">User ID of users who left</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Member leave event example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"memberLeft"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479960</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"group"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"groupId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"left"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"members"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U91eeaf62d9..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="postback-event" class="h3 h3">Postback event</h3> | |
| <p>Event object for when a user performs a <a href="#postback-action">postback action</a> which initiates a | |
| postback. You can reply to postback events.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>postback</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">replyToken</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Token for replying to this event</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">postback.data</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Postback data</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal"><a href="#postback-params-object">postback.params</a></td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td style="word-break: normal">JSON object with the date and time selected by a user through a <a | |
| href="#datetime-picker-action">datetime picker action</a>.<br> | |
| Only returned for postback actions via a <a href="#datetime-picker-action">datetime picker action</a>. | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Postback event example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="s2">"b60d432864f44d079f6d8efe86cf404b"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:{</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="s2">"U91eeaf62d..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"user"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="mi">1513669370317</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"postback"</span><span class="p">:{</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="s2">"storeId=12345"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"params"</span><span class="p">:{</span><span class="w"> | |
| </span><span class="s2">"datetime"</span><span class="p">:</span><span class="s2">"2017-12-25T01:00"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="postback-params-object" class="h4 h4"> | |
| <code>postback.params</code> object</h4> | |
| <p>Object with the date and time selected by a user through a <a href="#datetime-picker-action">datetime | |
| picker action</a>. The <code>full-date</code>, <code>time-hour</code>, and <code>time-minute</code> | |
| formats follow the <a href="https://www.ietf.org/rfc/rfc3339.txt" target="_blank">RFC3339 protocol</a>.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Format</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">date</td> | |
| <td class=" nowrap" style="word-break: normal">full-date</td> | |
| <td style="word-break: normal">Date selected by user. Only included in the <code>date</code> mode.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">time</td> | |
| <td style="word-break: normal">time-hour ":" time-minute</td> | |
| <td style="word-break: normal">Time selected by the user. Only included in the <code>time</code> mode. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">datetime</td> | |
| <td style="word-break: normal">full-date "T" time-hour ":" time-minute</td> | |
| <td style="word-break: normal">Date and time selected by the user. Only included in the | |
| <code>datetime</code> mode.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> postback.params object example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"datetime"</span><span class="p">:</span><span class="s2">"2017-12-25T01:00"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="beacon-event" class="h3 h3">Beacon event</h3> | |
| <p>Event object for when a user enters the range of a <a href="/en/docs/messaging-api/using-beacons/">LINE | |
| Beacon</a>. You can reply to beacon events.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>beacon</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">replyToken</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Token for replying to this event</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">beacon.hwid</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Hardware ID of the beacon that was detected</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">beacon.type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Type of beacon event. See <a href="#beacon-event-types">Beacon event | |
| types</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">beacon.dm</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Device message of beacon that was detected. This message consists of data | |
| generated by the beacon to send notifications to bot servers. Only included in webhook events from | |
| devices that support the "device message" property.<br> | |
| For more information, see the <a | |
| href="https://github.com/line/line-simple-beacon/blob/master/README.en.md#line-simple-beacon-frame" | |
| target="_blank">LINE Simple Beacon specification</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="beacon-event-types" class="h4 h4">Beacon event types</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">beacon.type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal"><code>enter</code></td> | |
| <td style="word-break: normal">Entered beacon's reception range</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal"><del><code>leave</code></del></td> | |
| <td style="word-break: normal">[Deprecated] <del>Left beacon's reception range.</del> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal"><code>banner</code></td> | |
| <td style="word-break: normal">Tapped <a | |
| href="/en/docs/messaging-api/using-beacons/#beacon-banner">beacon banner</a> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>If you are interested in using the Beacon Banner feature, make an inquiry through the <a | |
| href="https://www.linebiz.com/" target="_blank">LINE for Business</a> website.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Beacon event example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"beacon"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U4af4980629..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"beacon"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"hwid"</span><span class="p">:</span><span class="w"> </span><span class="s2">"d41d8cd98f"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"enter"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="account-link-event" class="h3 h3">Account link event</h3> | |
| <p>Event object for when a user has linked his/her LINE account with a provider's service account. You can | |
| reply to account link events.</p> | |
| <p>If the link token has expired or has already been used, no webhook event will be sent and the user will be | |
| shown an error.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal"><code>accountLink</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">replyToken</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Token for replying to this event. This value will not be included if the | |
| link has failed.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">link</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td style="word-break: normal"> | |
| <a href="#link-object"><code>link</code> object</a>. This will include whether the account link was | |
| successful or not and a nonce generated from the user ID on the provider's service.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Account link event example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"accountLink"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"b60d432864f44d079f6d8efe86cf404b"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U91eeaf62d..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1513669370317</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"link"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"result"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ok"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"nonce"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxxxxxxxxxxxxxx"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="link-object" class="h4 h4"> | |
| <code>link</code> object</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">result</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">One of the following values to indicate whether the link was successful | |
| or not. | |
| <ul> | |
| <li> | |
| <code>ok</code>: Indicates the link was successful.</li> | |
| <li> | |
| <code>failed</code>: Indicates the link failed for any reason, such as due to a user | |
| impersonation.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">nonce</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal"><a | |
| href="/en/docs/messaging-api/linking-accounts/#verifying-user-id">Specified nonce when verifying the | |
| user ID</a></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example link object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="s2">"link"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"result"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ok"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"nonce"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxxxxxxxxxxxxxx"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="device-link-event" class="h3 h3">Device link event</h3> | |
| <p>Indicates that a user linked a device with LINE.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>things</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">replyToken</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Token for replying to this event</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.deviceId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Device ID of the device that has been linked with LINE.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>link</code></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>If you use the LINE Things API, you can identify the device that has been linked or unlinked by the user | |
| from the device ID acquired by the Webhook event. For more information about the API, see <a | |
| href="/en/reference/line-things/#get-product-id-and-psdi">Getting the product ID and PSDI by specifying | |
| the device ID</a> in the LINE Things API reference.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Device link event example | |
| </p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"things"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U91eeaf62d..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"things"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"deviceId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"t2c449c9d1..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"link"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="device-unlink-event" class="h3 h3">Device unlink event</h3> | |
| <p>Indicates that the user unlinked a device from LINE.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>things</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">replyToken</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Token for replying to this event</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.deviceId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Device ID of the device that was unlinked from LINE.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>unlink</code></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>If you use the LINE Things API, you can identify the device that has been linked or unlinked by the user | |
| from the device ID acquired by the Webhook event. For more information about the API, see <a | |
| href="/en/reference/line-things/#get-product-id-and-psdi">Getting the product ID and PSDI by specifying | |
| the device ID</a> in the LINE Things API reference.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Device unlink event example | |
| </p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"things"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"replyToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1462629479859</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"U91eeaf62d..."</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"things"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"deviceId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"t2c449c9d1..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"unlink"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="scenario-result-event" class="h3 h3">LINE Things scenario execution event</h3> | |
| <p>This event indicates that an automatic communication scenario has been executed.</p> | |
| <p>Rather than returning an aggregated result for a scenario set, an execution result is returned for each | |
| individual scenario.</p> | |
| <p>The order in which execution results are returned is independent of the order of the scenarios.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>things</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">replyToken</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Token for replying to this event</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.deviceId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Device ID of the device that executed the scenario</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal"><code>scenarioResult</code></td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.result.scenarioId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Scenario ID executed</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.result.revision</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Revision number of the scenario set containing the executed scenario</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.result.startTime</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Timestamp for when execution of scenario action started (milliseconds, | |
| LINE app time)</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.result.endTime</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Timestamp for when execution of scenario was completed (milliseconds, | |
| LINE app time)</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.result.resultCode</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Scenario execution completion status <br> | |
| See also <a href="#things-result-resultcode">things.result.resultCode definitions</a>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.result.actionResults</td> | |
| <td class=" nowrap" style="word-break: normal">Array</td> | |
| <td style="word-break: normal">Execution result of individual operations specified in <a | |
| href="/en/docs/line-things/prepare-auto-communication/#action">action</a> <br> | |
| Note that an array of actions specified in a scenario has the following characteristics<br> | |
| <ul> | |
| <li>The actions defined in a scenario are performed sequentially, from top to bottom.</li> | |
| <li>Each action produces some result when executed. <br> | |
| Even actions that do not generate data, such as <code>SLEEP</code>, return an execution result of | |
| type <code>void</code>.</li> | |
| <li>The number of items in an <code>action</code> array may be 0.</li> | |
| </ul> | |
| Therefore, <code>things.result.actionResults</code> has the following properties: | |
| <ul> | |
| <li>The number of items in the array matches the number of actions defined in the scenario.</li> | |
| <li>The order of execution results matches the order in which actions are performed. That is, in a | |
| scenario set with multiple <code>GATT_READ</code> actions, the results are returned in the order | |
| in which each individual <code>GATT_READ</code> action was performed.</li> | |
| <li>If 0 actions are defined in the scenario, the number of items in | |
| <code>things.result.actionResults</code> will be 0.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.result.actionResults[].type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal"> | |
| <code>void</code>, <code>binary</code> | |
| <ul> | |
| <li>Depends on <code>type</code> of the executed action.</li> | |
| <li>This property is always included if <code>things.result.actionResults</code> is not empty.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.result.actionResults[].data</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Base64-encoded binary data <br> | |
| This property is always included when <code>things.result.actionResults[].type</code> is | |
| <code>binary</code>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.result.bleNotificationPayload</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Data contained in notification <br> | |
| The value is Base64-encoded binary data. Only included for scenarios where <code>trigger.type = | |
| BLE_NOTIFICATION</code>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">things.result.errorReason</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Error reason</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="things-result-resultcode" class="h4 h4">things.result.resultCode definition</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">resultCode</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">success</td> | |
| <td style="word-break: normal">Indicates that the execution has completed successfully</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">gatt_error</td> | |
| <td style="word-break: normal">Indicates that the execution of the GATT operation failed<br> | |
| <ul> | |
| <li>GATT Service UUID is incorrect.</li> | |
| <li>GATT Characteristic UUID is incorrect.</li> | |
| <li>Attempted to write to a characteristic that cannot be written to.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">runtime_error</td> | |
| <td style="word-break: normal">Indicates that an unexpected error has occurred<br> | |
| <ul> | |
| <li>When an unexpected error has occurred</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example of LINE Things scenario execution event | |
| </p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"events"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"things"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"uXXX"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"timestamp"</span><span class="p">:</span><span class="w"> </span><span class="mi">1547817848122</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"things"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"scenarioResult"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"deviceId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"tXXX"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"result"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"scenarioId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"XXX"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"revision"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"startTime"</span><span class="p">:</span><span class="w"> </span><span class="mi">1547817845950</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"endTime"</span><span class="p">:</span><span class="w"> </span><span class="mi">1547817845952</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"resultCode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"success"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"bleNotificationPayload"</span><span class="p">:</span><span class="w"> </span><span class="s2">"AQ=="</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"actionResults"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"binary"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/w=="</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">],</span><span class="w"> | |
| </span><span class="s2">"destination"</span><span class="p">:</span><span class="w"> </span><span class="s2">"uXXX"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="oauth" class="h2 h2">OAuth</h2> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="issue-channel-access-token" class="h3 h3">Issue channel access token</h3> | |
| <div class="Md108FrameNote"> | |
| <p><span class="Md07TextBold">Note:</span> This method issues a short-lived channel access token that is | |
| valid for 30 days. To issue a long-lived channel access token, use the "Issue" button found on the <a | |
| href="/console/">console</a>. | |
| </p> | |
| </div> | |
| <p>Issues a short-lived channel access token. </p> | |
| <p>Up to 30 tokens can be issued. If the maximum is exceeded, existing channel access tokens are revoked in | |
| the order of when they were first issued.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/oauth/accessToken</code></p> | |
| <h4 id="request-header" class="h4 h4">Request header</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal">application/x-www-form-urlencoded</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="request-body" class="h4 h4">Request body</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Field</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">grant_type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal"><code>client_credentials</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">client_id</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Channel ID. Found on the <a href="/console/">console</a>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">client_secret</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Channel secret. Found on the <a href="/console/">console</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/oauth/accessToken <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s2">"Content-Type:application/x-www-form-urlencoded"</span> <span class="se">\</span> | |
| <span class="nt">--data-urlencode</span> <span class="s1">'grant_type=client_credentials'</span> <span class="se">\</span> | |
| <span class="nt">--data-urlencode</span> <span class="s1">'client_id={channel ID}'</span> <span class="se">\</span> | |
| <span class="nt">--data-urlencode</span> <span class="s1">'client_secret={channel secret}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">createChannelAccessToken</span><span class="p">(</span><span class="s1">'<channel id>'</span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns a <code>200</code> HTTP status code and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">access_token</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Short-lived channel access token. Valid for 30 days.<br> | |
| Note: Channel access tokens cannot be refreshed.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">expires_in</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Time until channel access token expires in seconds from time the token is | |
| issued</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">token_type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal"><code>Bearer</code></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"access_token"</span><span class="p">:</span><span class="s2">"W1TeHCgfH2Liwa....."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"expires_in"</span><span class="p">:</span><span class="mi">2592000</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"token_type"</span><span class="p">:</span><span class="s2">"Bearer"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="error-response" class="h4 h4">Error response</h4> | |
| <p>Returns a <code>400</code> HTTP status code and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">error</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Error summary</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">error_description</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Details of the error. Not returned in certain situations.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example error response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"error"</span><span class="p">:</span><span class="s2">"invalid_request"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"error_description"</span><span class="p">:</span><span class="s2">"some parameters missed or invalid"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="revoke-channel-access-token" class="h3 h3">Revoke channel access token</h3> | |
| <p>Revokes a channel access token.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/oauth/revoke</code></p> | |
| <h4 id="request-header" class="h4 h4">Request header</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal">application/x-www-form-urlencoded</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="request-body" class="h4 h4">Request body</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Field</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">access_token</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Channel access token</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty response body. No error occurs if an invalid channel | |
| access token is specified.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/oauth/revoke <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s2">"Content-Type: application/x-www-form-urlencoded"</span> <span class="se">\</span> | |
| <span class="nt">--data-urlencode</span> <span class="s1">'access_token={channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">revokeChannelAccessToken</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="error-response" class="h4 h4">Error response</h4> | |
| <p>Returns a <code>400</code> HTTP status code and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">error</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Error summary</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">error_description</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Details of the error. Not returned in certain situations.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example error response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"error"</span><span class="p">:</span><span class="s2">"invalid_request"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"error_description"</span><span class="p">:</span><span class="s2">"some parameters missed or invalid"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="messages" class="h2 h2">Message</h2> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="send-reply-message" class="h3 h3">Send reply message</h3> | |
| <p>Sends a reply message in response to an event from a user, group, or room.</p> | |
| <p>To send reply messages, you must have a reply token which is included in a webhook event object.</p> | |
| <p><a href="#webhooks">Webhooks</a> are used to notify you when an event occurs. For events that you can | |
| respond to, a reply token is issued for replying to messages.</p> | |
| <p>Because the reply token becomes invalid after a certain period of time, responses should be sent as soon as | |
| a message is received. Reply tokens can only be used once.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/message/reply</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal">application/json</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="request-body" class="h4 h4">Request body</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">replyToken</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Reply token received via webhook</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">messages</td> | |
| <td style="word-break: normal">Array of <a href="#message-objects">message objects</a> | |
| </td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Messages<br> | |
| Max: 5</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">notificationDisabled</td> | |
| <td class=" nowrap" style="word-break: normal">Boolean</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal"> | |
| <ul> | |
| <li> | |
| <code>true</code>: The user doesn't receive a push notification when the message is sent.</li> | |
| <li> | |
| <code>false</code>: The user receives a push notification when the message is sent (unless they | |
| have disabled push notifications in LINE and/or their device).</li> | |
| </ul> | |
| Default: <code>false</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/message/reply <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Content-Type:application/json'</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> <span class="se">\</span> | |
| <span class="nt">-d</span> <span class="s1">'{ | |
| "replyToken":"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA", | |
| "messages":[ | |
| { | |
| "type":"text", | |
| "text":"Hello, user" | |
| }, | |
| { | |
| "type":"text", | |
| "text":"May I help you?" | |
| } | |
| ] | |
| }'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="kd">final</span> <span class="n">LineMessagingClient</span> <span class="n">client</span> <span class="o">=</span> <span class="n">LineMessagingClient</span> | |
| <span class="o">.</span><span class="na">builder</span><span class="o">(</span><span class="s">"<channel access token>"</span><span class="o">)</span> | |
| <span class="o">.</span><span class="na">build</span><span class="o">();</span> | |
| <span class="kd">final</span> <span class="n">TextMessage</span> <span class="n">textMessage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TextMessage</span><span class="o">(</span><span class="s">"hello"</span><span class="o">);</span> | |
| <span class="kd">final</span> <span class="n">ReplyMessage</span> <span class="n">replyMessage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ReplyMessage</span><span class="o">(</span> | |
| <span class="s">"<replyToken>"</span><span class="o">,</span> | |
| <span class="n">textMessage</span><span class="o">);</span> | |
| <span class="kd">final</span> <span class="n">BotApiResponse</span> <span class="n">botApiResponse</span><span class="o">;</span> | |
| <span class="k">try</span> <span class="o">{</span> | |
| <span class="n">botApiResponse</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">replyMessage</span><span class="o">(</span><span class="n">replyMessage</span><span class="o">).</span><span class="na">get</span><span class="o">();</span> | |
| <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">InterruptedException</span> <span class="o">|</span> <span class="n">ExecutionException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span> | |
| <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span> | |
| <span class="k">return</span><span class="o">;</span> | |
| <span class="o">}</span> | |
| <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">botApiResponse</span><span class="o">);</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">ReplyMessage</span><span class="p">(</span><span class="o"><</span><span class="n">replyToken</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">NewTextMessage</span><span class="p">(</span><span class="s">"hello"</span><span class="p">))</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">message</span> <span class="o">=</span> <span class="p">{</span> | |
| <span class="ss">type: </span><span class="s1">'text'</span><span class="p">,</span> | |
| <span class="ss">text: </span><span class="s1">'hello'</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="s2">"<channel secret>"</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="s2">"<channel access token>"</span> | |
| <span class="p">}</span> | |
| <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="nf">reply_message</span><span class="p">(</span><span class="s2">"<replyToken>"</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span> | |
| <span class="nb">p</span> <span class="n">response</span> | |
| </code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$textMessageBuilder</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\MessageBuilder\TextMessageBuilder</span><span class="p">(</span><span class="s1">'hello'</span><span class="p">);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">replyMessage</span><span class="p">(</span><span class="s1">'<replyToken>'</span><span class="p">,</span> <span class="nv">$textMessageBuilder</span><span class="p">);</span> | |
| <span class="k">echo</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getHTTPStatus</span><span class="p">()</span> <span class="o">.</span> <span class="s1">' '</span> <span class="o">.</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getRawBody</span><span class="p">();</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="k">use</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="p">;</span> | |
| <span class="k">use</span> <span class="nn">LINE::Bot::API::Builder::</span><span class="nv">SendMessage</span><span class="p">;</span> | |
| <span class="k">my</span> <span class="nv">$bot</span> <span class="o">=</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="o">-></span><span class="k">new</span><span class="p">(</span> | |
| <span class="nv">channel_secret</span> <span class="o">=></span> <span class="s">"<channel secret>"</span><span class="p">,</span> | |
| <span class="nv">channel_access_token</span> <span class="o">=></span> <span class="s">"<channel access token>"</span><span class="p">,</span> | |
| <span class="p">);</span> | |
| <span class="k">my</span> <span class="nv">$messages</span> <span class="o">=</span> <span class="nn">LINE::Bot::API::Builder::</span><span class="nv">SendMessage</span><span class="o">-></span><span class="k">new</span><span class="p">(</span> | |
| <span class="p">)</span><span class="o">-></span><span class="nv">add_text</span><span class="p">(</span> | |
| <span class="nv">text</span> <span class="o">=></span> <span class="s">'hello'</span><span class="p">,</span> | |
| <span class="p">);</span> | |
| <span class="k">my</span> <span class="nv">$res</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="nv">reply_message</span><span class="p">(</span><span class="s">"<replyToken>"</span><span class="p">,</span> <span class="nv">$messages</span><span class="o">-></span><span class="nv">build</span><span class="p">);</span> | |
| <span class="k">unless</span> <span class="p">(</span><span class="nv">$res</span><span class="o">-></span><span class="nv">is_success</span><span class="p">)</span> <span class="p">{</span> | |
| <span class="c1"># error handling</span> | |
| <span class="o">....</span> | |
| <span class="p">}</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="kn">from</span> <span class="nn">linebot</span> <span class="kn">import</span> <span class="n">LineBotApi</span> | |
| <span class="kn">from</span> <span class="nn">linebot.models</span> <span class="kn">import</span> <span class="n">TextSendMessage</span> | |
| <span class="kn">from</span> <span class="nn">linebot.exceptions</span> <span class="kn">import</span> <span class="n">LineBotApiError</span> | |
| <span class="n">line_bot_api</span> <span class="o">=</span> <span class="n">LineBotApi</span><span class="p">(</span><span class="s">'<channel access token>'</span><span class="p">)</span> | |
| <span class="k">try</span><span class="p">:</span> | |
| <span class="n">line_bot_api</span><span class="o">.</span><span class="n">reply_message</span><span class="p">(</span><span class="s">'<reply_token>'</span><span class="p">,</span> <span class="n">TextSendMessage</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s">'Hello World!'</span><span class="p">))</span> | |
| <span class="k">except</span> <span class="n">LineBotApiError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> | |
| <span class="c"># error handle</span> | |
| <span class="o">...</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="kd">const</span> <span class="nx">line</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'@line/bot-sdk'</span><span class="p">);</span> | |
| <span class="kd">const</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">line</span><span class="p">.</span><span class="nx">Client</span><span class="p">({</span> | |
| <span class="na">channelAccessToken</span><span class="p">:</span> <span class="s1">'<channel access token>'</span> | |
| <span class="p">});</span> | |
| <span class="kd">const</span> <span class="nx">message</span> <span class="o">=</span> <span class="p">{</span> | |
| <span class="na">type</span><span class="p">:</span> <span class="s1">'text'</span><span class="p">,</span> | |
| <span class="na">text</span><span class="p">:</span> <span class="s1">'Hello World!'</span> | |
| <span class="p">};</span> | |
| <span class="nx">client</span><span class="p">.</span><span class="nx">replyMessage</span><span class="p">(</span><span class="s1">'<replyToken>'</span><span class="p">,</span> <span class="nx">message</span><span class="p">)</span> | |
| <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="p">...</span> | |
| <span class="p">})</span> | |
| <span class="p">.</span><span class="k">catch</span><span class="p">((</span><span class="nx">err</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="c1">// error handling</span> | |
| <span class="p">});</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="send-push-message" class="h3 h3">Send push message</h3> | |
| <p>Sends a push message to a user, group, or room at any time.</p> | |
| <p>Note: LINE@ accounts under the free or basic plan cannot call this API endpoint.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/message/push</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal">application/json</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="request-body" class="h4 h4">Request body</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">to</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">ID of the target recipient. Use a <code>userId</code>, | |
| <code>groupId</code>, or <code>roomId</code> value returned in a <a href="#common-properties">webhook | |
| event object</a>. Do not use the LINE ID found on LINE.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">messages</td> | |
| <td style="word-break: normal">Array of <a href="#message-objects">message objects</a> | |
| </td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Messages<br> | |
| Max: 5</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">notificationDisabled</td> | |
| <td class=" nowrap" style="word-break: normal">Boolean</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal"> | |
| <ul> | |
| <li> | |
| <code>true</code>: The user doesn't receive a push notification when the message is sent.</li> | |
| <li> | |
| <code>false</code>: The user receives a push notification when the message is sent (unless they | |
| have disabled push notifications in LINE and/or their device).</li> | |
| </ul> | |
| Default: <code>false</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/message/push <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Content-Type:application/json'</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> <span class="se">\</span> | |
| <span class="nt">-d</span> <span class="s1">'{ | |
| "to": "U4af4980629...", | |
| "messages":[ | |
| { | |
| "type":"text", | |
| "text":"Hello, world1" | |
| }, | |
| { | |
| "type":"text", | |
| "text":"Hello, world2" | |
| } | |
| ] | |
| }'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="kd">final</span> <span class="n">LineMessagingClient</span> <span class="n">client</span> <span class="o">=</span> <span class="n">LineMessagingClient</span> | |
| <span class="o">.</span><span class="na">builder</span><span class="o">(</span><span class="s">"<channel access token>"</span><span class="o">)</span> | |
| <span class="o">.</span><span class="na">build</span><span class="o">();</span> | |
| <span class="kd">final</span> <span class="n">TextMessage</span> <span class="n">textMessage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TextMessage</span><span class="o">(</span><span class="s">"hello"</span><span class="o">);</span> | |
| <span class="kd">final</span> <span class="n">PushMessage</span> <span class="n">pushMessage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">PushMessage</span><span class="o">(</span> | |
| <span class="s">"<to>"</span><span class="o">,</span> | |
| <span class="n">textMessage</span><span class="o">);</span> | |
| <span class="kd">final</span> <span class="n">BotApiResponse</span> <span class="n">botApiResponse</span><span class="o">;</span> | |
| <span class="k">try</span> <span class="o">{</span> | |
| <span class="n">botApiResponse</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">pushMessage</span><span class="o">(</span><span class="n">pushMessage</span><span class="o">).</span><span class="na">get</span><span class="o">();</span> | |
| <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">InterruptedException</span> <span class="o">|</span> <span class="n">ExecutionException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span> | |
| <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span> | |
| <span class="k">return</span><span class="o">;</span> | |
| <span class="o">}</span> | |
| <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">botApiResponse</span><span class="o">);</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">PushMessage</span><span class="p">(</span><span class="o"><</span><span class="n">to</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">NewTextMessage</span><span class="p">(</span><span class="s">"hello"</span><span class="p">))</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">message</span> <span class="o">=</span> <span class="p">{</span> | |
| <span class="ss">type: </span><span class="s1">'text'</span><span class="p">,</span> | |
| <span class="ss">text: </span><span class="s1">'hello'</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="s2">"<channel secret>"</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="s2">"<channel access token>"</span> | |
| <span class="p">}</span> | |
| <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="nf">push_message</span><span class="p">(</span><span class="s2">"<to>"</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span> | |
| <span class="nb">p</span> <span class="n">response</span> | |
| </code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$textMessageBuilder</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\MessageBuilder\TextMessageBuilder</span><span class="p">(</span><span class="s1">'hello'</span><span class="p">);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">pushMessage</span><span class="p">(</span><span class="s1">'<to>'</span><span class="p">,</span> <span class="nv">$textMessageBuilder</span><span class="p">);</span> | |
| <span class="k">echo</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getHTTPStatus</span><span class="p">()</span> <span class="o">.</span> <span class="s1">' '</span> <span class="o">.</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getRawBody</span><span class="p">();</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="k">use</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="p">;</span> | |
| <span class="k">use</span> <span class="nn">LINE::Bot::API::Builder::</span><span class="nv">SendMessage</span><span class="p">;</span> | |
| <span class="k">my</span> <span class="nv">$bot</span> <span class="o">=</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="o">-></span><span class="k">new</span><span class="p">(</span> | |
| <span class="nv">channel_secret</span> <span class="o">=></span> <span class="s">"<channel secret>"</span><span class="p">,</span> | |
| <span class="nv">channel_access_token</span> <span class="o">=></span> <span class="s">"<channel access token>"</span><span class="p">,</span> | |
| <span class="p">);</span> | |
| <span class="k">my</span> <span class="nv">$messages</span> <span class="o">=</span> <span class="nn">LINE::Bot::API::Builder::</span><span class="nv">SendMessage</span><span class="o">-></span><span class="k">new</span><span class="p">(</span> | |
| <span class="p">)</span><span class="o">-></span><span class="nv">add_text</span><span class="p">(</span> | |
| <span class="nv">text</span> <span class="o">=></span> <span class="s">'hello'</span><span class="p">,</span> | |
| <span class="p">);</span> | |
| <span class="k">my</span> <span class="nv">$res</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="nv">push_message</span><span class="p">(</span><span class="s">"<to>"</span><span class="p">,</span> <span class="nv">$messages</span><span class="o">-></span><span class="nv">build</span><span class="p">);</span> | |
| <span class="k">unless</span> <span class="p">(</span><span class="nv">$res</span><span class="o">-></span><span class="nv">is_success</span><span class="p">)</span> <span class="p">{</span> | |
| <span class="c1"># error handling</span> | |
| <span class="o">....</span> | |
| <span class="p">}</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="kn">from</span> <span class="nn">linebot</span> <span class="kn">import</span> <span class="n">LineBotApi</span> | |
| <span class="kn">from</span> <span class="nn">linebot.models</span> <span class="kn">import</span> <span class="n">TextSendMessage</span> | |
| <span class="kn">from</span> <span class="nn">linebot.exceptions</span> <span class="kn">import</span> <span class="n">LineBotApiError</span> | |
| <span class="n">line_bot_api</span> <span class="o">=</span> <span class="n">LineBotApi</span><span class="p">(</span><span class="s">'<channel access token>'</span><span class="p">)</span> | |
| <span class="k">try</span><span class="p">:</span> | |
| <span class="n">line_bot_api</span><span class="o">.</span><span class="n">push_message</span><span class="p">(</span><span class="s">'<to>'</span><span class="p">,</span> <span class="n">TextSendMessage</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s">'Hello World!'</span><span class="p">))</span> | |
| <span class="k">except</span> <span class="n">LineBotApiError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> | |
| <span class="c"># error handle</span> | |
| <span class="o">...</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="kd">const</span> <span class="nx">line</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'@line/bot-sdk'</span><span class="p">);</span> | |
| <span class="kd">const</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">line</span><span class="p">.</span><span class="nx">Client</span><span class="p">({</span> | |
| <span class="na">channelAccessToken</span><span class="p">:</span> <span class="s1">'<channel access token>'</span> | |
| <span class="p">});</span> | |
| <span class="kd">const</span> <span class="nx">message</span> <span class="o">=</span> <span class="p">{</span> | |
| <span class="na">type</span><span class="p">:</span> <span class="s1">'text'</span><span class="p">,</span> | |
| <span class="na">text</span><span class="p">:</span> <span class="s1">'Hello World!'</span> | |
| <span class="p">};</span> | |
| <span class="nx">client</span><span class="p">.</span><span class="nx">pushMessage</span><span class="p">(</span><span class="s1">'<to>'</span><span class="p">,</span> <span class="nx">message</span><span class="p">)</span> | |
| <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="p">...</span> | |
| <span class="p">})</span> | |
| <span class="p">.</span><span class="k">catch</span><span class="p">((</span><span class="nx">err</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="c1">// error handling</span> | |
| <span class="p">});</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="send-multicast-message" class="h3 h3">Send multicast message</h3> | |
| <p>Sends push messages to multiple users at any time. Messages cannot be sent to groups or rooms.</p> | |
| <p>Note: LINE@ accounts under the free or basic plan cannot call this API endpoint.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/message/multicast</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal">application/json</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="request-body" class="h4 h4">Request body</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">to</td> | |
| <td style="word-break: normal">Array of strings</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Array of user IDs. Use <code>userId</code> values which are returned in | |
| <a href="#common-properties">webhook event objects</a>. Do not use LINE IDs found on LINE.<br> | |
| Max: 150 user IDs</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">messages</td> | |
| <td style="word-break: normal">Array of <a href="#message-objects">message objects</a> | |
| </td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Messages<br> | |
| Max: 5</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">notificationDisabled</td> | |
| <td class=" nowrap" style="word-break: normal">Boolean</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal"> | |
| <ul> | |
| <li> | |
| <code>true</code>: The user doesn't receive a push notification when the message is sent.</li> | |
| <li> | |
| <code>false</code>: The user receives a push notification when the message is sent (unless they | |
| have disabled push notifications in LINE and/or their device).</li> | |
| </ul> | |
| Default: <code>false</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/message/multicast <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Content-Type:application/json'</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> <span class="se">\</span> | |
| <span class="nt">-d</span> <span class="s1">'{ | |
| "to": ["U4af4980629...","U0c229f96c4..."], | |
| "messages":[ | |
| { | |
| "type":"text", | |
| "text":"Hello, world1" | |
| }, | |
| { | |
| "type":"text", | |
| "text":"Hello, world2" | |
| } | |
| ] | |
| }'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">user_ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">user_id1</span><span class="p">,</span> <span class="n">user_id2</span><span class="p">,</span> <span class="o">...</span><span class="p">]</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">multicast</span><span class="p">(</span><span class="n">user_ids</span><span class="p">,</span> <span class="o"><</span><span class="n">message</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">userIDs</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="p">[]</span><span class="kt">string</span><span class="p">{</span><span class="x"> </span><span class="o">...</span><span class="x"> </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">Multicast</span><span class="p">(</span><span class="n">userIDs</span><span class="p">,</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">NewTextMessage</span><span class="p">(</span><span class="s">"hello"</span><span class="p">))</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$userIds</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'<userId1>'</span><span class="p">,</span> <span class="s1">'<userId2>'</span><span class="p">,</span> <span class="o">...</span><span class="p">];</span> | |
| <span class="nv">$bot</span><span class="o">-></span><span class="na">multicast</span><span class="p">(</span><span class="nv">$userIds</span><span class="p">,</span> <span class="s1">'<message>'</span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">line_bot_api</span><span class="o">.</span><span class="n">multicast</span><span class="p">([</span><span class="s">'<user_id_1>'</span><span class="p">,</span> <span class="s">'<user_id_2>'</span><span class="p">],</span> <span class="n">TextSendMessage</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s">'Hello World!'</span><span class="p">))</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="send-broadcast-message" class="h3 h3">Send broadcast message</h3> | |
| <p>Sends push messages to multiple users at any time.</p> | |
| <div class="annotation is-note"> | |
| <div class="annotation-header"> | |
| <i class="global-icon global-icon_note">note</i> | |
| LINE official account migration | |
| </div> | |
| <div class="annotation-body"> | |
| <p>You can't call this API with a LINE@ account or LINE official account that hasn't been migrated to the | |
| account plans implemented on April 18, 2019. Please migrate your account first. For more information, | |
| see <a href="/en/docs/messaging-api/migrating-line-at/">Migration of LINE@ accounts</a>.</p> | |
| </div> | |
| </div> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/message/broadcast</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal">application/json</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="request-body" class="h4 h4">Request body</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">messages</td> | |
| <td style="word-break: normal">Array of <a href="#message-objects">message objects</a> | |
| </td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Messages<br> | |
| Max: 5</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">notificationDisabled</td> | |
| <td class=" nowrap" style="word-break: normal">Boolean</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal"> | |
| <ul> | |
| <li> | |
| <code>true</code>: The user doesn't receive a push notification when the message is sent.</li> | |
| <li> | |
| <code>false</code>: The user receives a push notification when the message is sent (unless they | |
| have disabled push notifications in LINE and/or their device).</li> | |
| </ul> | |
| Default: <code>false</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/message/broadcast <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Content-Type:application/json'</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> <span class="se">\</span> | |
| <span class="nt">-d</span> <span class="s1">'{ | |
| "messages":[ | |
| { | |
| "type":"text", | |
| "text":"Hello, world1" | |
| }, | |
| { | |
| "type":"text", | |
| "text":"Hello, world2" | |
| } | |
| ] | |
| }'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-content" class="h3 h3">Get content</h3> | |
| <p>Gets image, video, and audio data sent by users.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/message/{messageId}/content</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">messageId</td> | |
| <td class=" nowrap" style="word-break: normal">Message ID</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns status code <code>200</code> and the content in binary.</p> | |
| <p>Content is automatically deleted after a certain period from when the message was sent. There is no | |
| guarantee for how long content is stored.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/message/<span class="o">{</span>messageId<span class="o">}</span>/content <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="kd">final</span> <span class="n">LineMessagingClient</span> <span class="n">client</span> <span class="o">=</span> <span class="n">LineMessagingClient</span> | |
| <span class="o">.</span><span class="na">builder</span><span class="o">(</span><span class="s">"<channel access token>"</span><span class="o">)</span> | |
| <span class="o">.</span><span class="na">build</span><span class="o">();</span> | |
| <span class="kd">final</span> <span class="n">MessageContentResponse</span> <span class="n">messageContentResponse</span><span class="o">;</span> | |
| <span class="k">try</span> <span class="o">{</span> | |
| <span class="n">messageContentResponse</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">getMessageContent</span><span class="o">(</span><span class="s">"<messageId>"</span><span class="o">).</span><span class="na">get</span><span class="o">();</span> | |
| <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">InterruptedException</span> <span class="o">|</span> <span class="n">ExecutionException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span> | |
| <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span> | |
| <span class="k">return</span><span class="o">;</span> | |
| <span class="o">}</span> | |
| <span class="n">Files</span><span class="o">.</span><span class="na">copy</span><span class="o">(</span><span class="n">messageContentResponse</span><span class="o">.</span><span class="na">getStream</span><span class="o">(),</span> | |
| <span class="n">Files</span><span class="o">.</span><span class="na">createTempFile</span><span class="o">(</span><span class="s">"foo"</span><span class="o">,</span> <span class="s">"bar"</span><span class="o">));</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">content</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">GetMessageContent</span><span class="p">(</span><span class="o"><</span><span class="n">messageID</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">defer</span><span class="x"> </span><span class="n">content</span><span class="o">.</span><span class="n">Content</span><span class="o">.</span><span class="n">Close</span><span class="p">()</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="s2">"<channel secret>"</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="s2">"<channel access token>"</span> | |
| <span class="p">}</span> | |
| <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="nf">get_message_content</span><span class="p">(</span><span class="s2">"<messageId>"</span><span class="p">)</span> | |
| <span class="k">case</span> <span class="n">response</span> | |
| <span class="k">when</span> <span class="no">Net</span><span class="o">::</span><span class="no">HTTPSuccess</span> <span class="k">then</span> | |
| <span class="n">tf</span> <span class="o">=</span> <span class="no">Tempfile</span><span class="p">.</span><span class="nf">open</span><span class="p">(</span><span class="s2">"content"</span><span class="p">)</span> | |
| <span class="n">tf</span><span class="p">.</span><span class="nf">write</span><span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="nf">body</span><span class="p">)</span> | |
| <span class="k">else</span> | |
| <span class="nb">p</span> <span class="s2">"</span><span class="si">#{</span><span class="n">response</span><span class="p">.</span><span class="nf">code</span><span class="si">}</span><span class="s2"> </span><span class="si">#{</span><span class="n">response</span><span class="p">.</span><span class="nf">body</span><span class="si">}</span><span class="s2">"</span> | |
| <span class="k">end</span> | |
| </code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">getMessageContent</span><span class="p">(</span><span class="s1">'<messageId>'</span><span class="p">);</span> | |
| <span class="k">if</span> <span class="p">(</span><span class="nv">$response</span><span class="o">-></span><span class="na">isSucceeded</span><span class="p">())</span> <span class="p">{</span> | |
| <span class="nv">$tempfile</span> <span class="o">=</span> <span class="nb">tmpfile</span><span class="p">();</span> | |
| <span class="nb">fwrite</span><span class="p">(</span><span class="nv">$tempfile</span><span class="p">,</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getRawBody</span><span class="p">());</span> | |
| <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> | |
| <span class="nb">error_log</span><span class="p">(</span><span class="nv">$response</span><span class="o">-></span><span class="na">getHTTPStatus</span><span class="p">()</span> <span class="o">.</span> <span class="s1">' '</span> <span class="o">.</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getRawBody</span><span class="p">());</span> | |
| <span class="p">}</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="k">use</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="p">;</span> | |
| <span class="k">my</span> <span class="nv">$bot</span> <span class="o">=</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="o">-></span><span class="k">new</span><span class="p">(</span> | |
| <span class="nv">channel_secret</span> <span class="o">=></span> <span class="s">"<channel secret>"</span><span class="p">,</span> | |
| <span class="nv">channel_access_token</span> <span class="o">=></span> <span class="s">"<channel access token>"</span><span class="p">,</span> | |
| <span class="p">);</span> | |
| <span class="k">my</span> <span class="nv">$res</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="nv">get_message_content</span><span class="p">(</span><span class="s">"<messageId>"</span><span class="p">);</span> | |
| <span class="k">unless</span> <span class="p">(</span><span class="nv">$res</span><span class="o">-></span><span class="nv">is_success</span><span class="p">)</span> <span class="p">{</span> | |
| <span class="c1"># error handling</span> | |
| <span class="o">....</span> | |
| <span class="p">}</span> | |
| <span class="k">my</span> <span class="nv">$filename</span> <span class="o">=</span> <span class="nv">$ret</span><span class="o">-></span><span class="nv">fh</span><span class="o">-></span><span class="nv">filename</span><span class="p">;</span> | |
| <span class="nb">open</span> <span class="k">my</span> <span class="nv">$fh</span><span class="p">,</span> <span class="s">'<'</span><span class="p">,</span> <span class="nv">$file</span> <span class="ow">or</span> <span class="nb">die</span> <span class="s">"$!: $file"</span><span class="p">;</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="kn">from</span> <span class="nn">linebot</span> <span class="kn">import</span> <span class="n">LineBotApi</span> | |
| <span class="n">line_bot_api</span> <span class="o">=</span> <span class="n">LineBotApi</span><span class="p">(</span><span class="s">'<channel access token>'</span><span class="p">)</span> | |
| <span class="n">message_content</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">get_message_content</span><span class="p">(</span><span class="s">'<message_id>'</span><span class="p">)</span> | |
| <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="s">'wb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fd</span><span class="p">:</span> | |
| <span class="k">for</span> <span class="n">chunk</span> <span class="ow">in</span> <span class="n">message_content</span><span class="o">.</span><span class="n">iter_content</span><span class="p">():</span> | |
| <span class="n">fd</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">chunk</span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="kd">const</span> <span class="nx">line</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'@line/bot-sdk'</span><span class="p">);</span> | |
| <span class="kd">const</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">line</span><span class="p">.</span><span class="nx">Client</span><span class="p">({</span> | |
| <span class="na">channelAccessToken</span><span class="p">:</span> <span class="s1">'<channel access token>'</span> | |
| <span class="p">});</span> | |
| <span class="nx">client</span><span class="p">.</span><span class="nx">getMessageContent</span><span class="p">(</span><span class="s1">'<messageId>'</span><span class="p">)</span> | |
| <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">stream</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="nx">stream</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'data'</span><span class="p">,</span> <span class="p">(</span><span class="nx">chunk</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="p">...</span> | |
| <span class="p">});</span> | |
| <span class="nx">stream</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="c1">// error handling</span> | |
| <span class="p">});</span> | |
| <span class="p">});</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-quota" class="h3 h3">Get the target limit for additional messages</h3> | |
| <p>Gets the target limit for additional messages in the current month.</p> | |
| <p>The number of messages retrieved by this operation includes the number of messages sent from LINE Official | |
| Account Manager.</p> | |
| <p>Set a target limit with LINE Official Account Manager. For the procedures, refer to the LINE Official | |
| Account Manager manual.</p> | |
| <p>Note: LINE@ accounts cannot call this API endpoint.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/message/quota</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/message/quota <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">One of the following values to indicate whether a target limit is set or | |
| not. | |
| <ul> | |
| <li> | |
| <code>none</code>. This indicates that a target limit is not set.</li> | |
| <li> | |
| <code>limited</code>. This indicates that a target limit is set.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">value</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">The target limit for additional messages in the current month. This | |
| property is returned when the <code>type</code> property has a value of <code>limited</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"limited"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"value"</span><span class="p">:</span><span class="mi">1000</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-consumption" class="h3 h3">Get number of messages sent this month</h3> | |
| <p>Gets the number of messages sent in the current month.</p> | |
| <p>The number of messages retrieved by this operation includes the number of messages sent from LINE Official | |
| Account Manager.</p> | |
| <p>The number of messages retrieved by this operation is approximate. To get the correct number of sent | |
| messages, use LINE Official Account Manager or execute API operations for getting the number of sent | |
| messages.</p> | |
| <p>Note: LINE@ accounts cannot call this API endpoint.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/message/quota/consumption</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/message/quota/consumption <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">totalUsage</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">The number of sent messages in the current month</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"totalUsage"</span><span class="p">:</span><span class="s2">"500"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-number-of-reply-messages" class="h3 h3">Get number of sent reply messages</h3> | |
| <p>Gets the number of messages sent with the <a href="#send-reply-message"><code>/bot/message/reply</code></a> | |
| endpoint.</p> | |
| <p>The number of messages retrieved by this operation does not include the number of messages sent from LINE | |
| Official Account Manager.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/message/delivery/reply</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="query-parameters" class="h4 h4">Query parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">date</td> | |
| <td style="word-break: normal">Date the messages were sent | |
| <ul> | |
| <li>Format: <code>yyyyMMdd</code> (Example: <code>20191231</code>)</li> | |
| <li>Timezone: UTC+9</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/message/delivery/reply?date<span class="o">={</span>yyyyMMdd<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">status</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Status of the counting process. One of the following values is returned: | |
| <ul> | |
| <li> | |
| <code>ready</code>: You can get the number of messages.</li> | |
| <li> | |
| <code>unready</code>: The message counting process for the date specified in <code>date</code> has | |
| not been completed yet. Retry your request later. Normally, the counting process is completed | |
| within the next day.</li> | |
| <li> | |
| <code>out_of_service</code>: The date specified in <code>date</code> is earlier than March 31, | |
| 2018, when the operation of the counting system started.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">success</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">The number of messages sent with the Messaging API on the date specified | |
| in <code>date</code>. The response has this property only when the value of <code>status</code> is | |
| <code>ready</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"status"</span><span class="p">:</span><span class="s2">"ready"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"success"</span><span class="p">:</span><span class="mi">10000</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-number-of-push-messages" class="h3 h3">Get number of sent push messages</h3> | |
| <p>Gets the number of messages sent with the <a href="#send-push-message"><code>/bot/message/push</code></a> | |
| endpoint.</p> | |
| <p>The number of messages retrieved by this operation does not include the number of messages sent from LINE | |
| Official Account Manager.</p> | |
| <p>Note: LINE@ accounts under the free or basic plan cannot call this API endpoint.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/message/delivery/push</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="query-parameters" class="h4 h4">Query parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">date</td> | |
| <td style="word-break: normal">Date the messages were sent | |
| <ul> | |
| <li>Format: <code>yyyyMMdd</code> (Example: <code>20191231</code>)</li> | |
| <li>Timezone: UTC+9</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/message/delivery/push?date<span class="o">={</span>yyyyMMdd<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">status</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Status of the counting process. One of the following values is returned: | |
| <ul> | |
| <li> | |
| <code>ready</code>: You can get the number of messages.</li> | |
| <li> | |
| <code>unready</code>: The message counting process for the date specified in <code>date</code> has | |
| not been completed yet. Retry your request later. Normally, the counting process is completed | |
| within the next day.</li> | |
| <li> | |
| <code>out_of_service</code>: The date specified in <code>date</code> is earlier than March 31, | |
| 2018, when the operation of the counting system started.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">success</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">The number of messages sent with the Messaging API on the date specified | |
| in <code>date</code>. The response has this property only when the value of <code>status</code> is | |
| <code>ready</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"status"</span><span class="p">:</span><span class="s2">"ready"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"success"</span><span class="p">:</span><span class="mi">10000</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-number-of-multicast-messages" class="h3 h3">Get number of sent multicast messages</h3> | |
| <p>Gets the number of messages sent with the <a | |
| href="#send-multicast-message"><code>/bot/message/multicast</code></a> endpoint.</p> | |
| <p>The number of messages retrieved by this operation does not include the number of messages sent from LINE | |
| Official Account Manager.</p> | |
| <p>Note: LINE@ accounts under the free or basic plan cannot call this API endpoint.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/message/delivery/multicast</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="query-parameters" class="h4 h4">Query parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">date</td> | |
| <td style="word-break: normal">Date the messages were sent | |
| <ul> | |
| <li>Format: <code>yyyyMMdd</code> (Example: <code>20191231</code>)</li> | |
| <li>Timezone: UTC+9</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/message/delivery/multicast?date<span class="o">={</span>yyyyMMdd<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">status</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Status of the counting process. One of the following values is returned: | |
| <ul> | |
| <li> | |
| <code>ready</code>: You can get the number of messages.</li> | |
| <li> | |
| <code>unready</code>: The message counting process for the date specified in <code>date</code> has | |
| not been completed yet. Retry your request later. Normally, the counting process is completed | |
| within the next day.</li> | |
| <li> | |
| <code>out_of_service</code>: The date specified in <code>date</code> is earlier than March 31, | |
| 2018, when the operation of the counting system started.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">success</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">The number of messages sent with the Messaging API on the date specified | |
| in <code>date</code>. The response has this property only when the value of <code>status</code> is | |
| <code>ready</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"status"</span><span class="p">:</span><span class="s2">"ready"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"success"</span><span class="p">:</span><span class="mi">10000</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-number-of-broadcast-messages" class="h3 h3">Get number of sent broadcast messages</h3> | |
| <p>Gets the number of messages sent with the <a | |
| href="#send-broadcast-message"><code>/bot/message/broadcast</code></a> endpoint.</p> | |
| <p>The number of messages retrieved by this operation does not include the number of messages sent from LINE | |
| Official Account Manager.</p> | |
| <div class="annotation is-note"> | |
| <div class="annotation-header"> | |
| <i class="global-icon global-icon_note">note</i> | |
| LINE official account migration | |
| </div> | |
| <div class="annotation-body"> | |
| <p>You can't call this API with a LINE@ account or LINE official account that hasn't been migrated to the | |
| account plans implemented on April 18, 2019. Please migrate your account first. For more information, | |
| see <a href="/en/docs/messaging-api/migrating-line-at/">Migration of LINE@ accounts</a>.</p> | |
| </div> | |
| </div> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/message/delivery/broadcast</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="query-parameters" class="h4 h4">Query parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">date</td> | |
| <td style="word-break: normal">Date the messages were sent | |
| <ul> | |
| <li>Format: <code>yyyyMMdd</code> (Example: <code>20191231</code>)</li> | |
| <li>Timezone: UTC+9</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/message/delivery/broadcast?date<span class="o">={</span>yyyyMMdd<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">status</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Status of the counting process. One of the following values is returned: | |
| <ul> | |
| <li> | |
| <code>ready</code>: You can get the number of messages.</li> | |
| <li> | |
| <code>unready</code>: The message counting process for the date specified in <code>date</code> has | |
| not been completed yet. Retry your request later. Normally, the counting process is completed | |
| within the next day.</li> | |
| <li> | |
| <code>out_of_service</code>: The date specified in <code>date</code> is earlier than March 31, | |
| 2018, when the operation of the counting system started.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">success</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">The number of messages sent with the Messaging API on the date specified | |
| in <code>date</code>. The response has this property only when the value of <code>status</code> is | |
| <code>ready</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"status"</span><span class="p">:</span><span class="s2">"ready"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"success"</span><span class="p">:</span><span class="mi">10000</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="get-insight" class="h2 h2">Insight</h2> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-number-of-delivery-messages" class="h3 h3">Get number of message deliveries</h3> | |
| <p>Returns the number of messages sent on a specified day.</p> | |
| <div class="annotation is-note"> | |
| <div class="annotation-header"> | |
| <i class="global-icon global-icon_note">note</i> | |
| LINE official account migration | |
| </div> | |
| <div class="annotation-body"> | |
| <p>You can't call this API with a LINE@ account or LINE official account that hasn't been migrated to the | |
| account plans implemented on April 18, 2019. Please migrate your account first. For more information, | |
| see <a href="/en/docs/messaging-api/migrating-line-at/">Migration of LINE@ accounts</a>.</p> | |
| </div> | |
| </div> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/insight/message/delivery?date={date}</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal">application/json</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="query-parameters" class="h4 h4">Query parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">date</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Date for which to retrieve number of sent messages | |
| <ul> | |
| <li>Format: <code>yyyyMMdd</code> (Example: <code>20191231</code>)</li> | |
| <li>Timezone: UTC+9</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/insight/message/delivery?date<span class="o">=</span>20190418 <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">get_number_of_message_deliveries</span><span class="p">(</span><span class="s2">"20190101"</span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns status code <code>200</code> and a JSON object with the following properties:</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">status</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Calculation status. One of: | |
| <ul> | |
| <li> | |
| <code>ready</code>: Calculation has finished; the numbers are up-to-date. </li> | |
| <li> | |
| <code>unready</code>: We haven't finished calculating the number of sent messages for the | |
| specified <code>date</code>. Calculation usually takes about a day. Please try again later.</li> | |
| <li> | |
| <code>out_of_service</code>: The specified <code>date</code> is earlier than the date on which we | |
| first started calculating sent messages (March 1, 2017).</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">broadcast</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Number of push messages sent to <em>all</em> of this LINE official | |
| account's friends (broadcast messages).</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">targeting</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Number of push messages sent to <em>some</em> of this LINE official | |
| account's friends, based on specific attributes (targeted/segmented messages).</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">autoResponse</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Number of auto-response messages sent.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">welcomeResponse</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Number of greeting messages sent.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">chat</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Number of messages sent from LINE Official Account Manager <a | |
| href="https://www.linebiz.com/jp-en/manual/OfficialAccountManager/chats/screens/" | |
| target="_blank">Chat screen</a>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">apiBroadcast</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Number of broadcast messages sent with the <a | |
| href="/en/reference/messaging-api/#send-broadcast-message">Send broadcast message</a> Messaging API | |
| operation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">apiPush</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Number of push messages sent with the <a | |
| href="/en/reference/messaging-api/#send-push-message">Send push message</a> Messaging API operation. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">apiMulticast</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Number of multicast messages sent with the <a | |
| href="/en/reference/messaging-api/#send-multicast-message">Send multicast message</a> Messaging API | |
| operation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">apiReply</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">Number of replies sent with the <a | |
| href="/en/reference/messaging-api/#send-reply-message">Send reply message</a> Messaging API | |
| operation.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>Properties after <code>broadcast</code> contain the number of messages sent on the date specified | |
| in<code>date</code>. These extra properties are included only if <code>status</code> is <code>ready</code>. | |
| </p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ready"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"broadcast"</span><span class="p">:</span><span class="w"> </span><span class="mi">5385</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"targeting"</span><span class="p">:</span><span class="w"> </span><span class="mi">522</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-number-of-followers" class="h3 h3">Get number of followers</h3> | |
| <p>Returns the number of users who have added the bot on or before a specified date.</p> | |
| <div class="annotation is-note"> | |
| <div class="annotation-header"> | |
| <i class="global-icon global-icon_note">note</i> | |
| LINE official account migration | |
| </div> | |
| <div class="annotation-body"> | |
| <p>You can't call this API with a LINE@ account or LINE official account that hasn't been migrated to the | |
| account plans implemented on April 18, 2019. Please migrate your account first. For more information, | |
| see <a href="/en/docs/messaging-api/migrating-line-at/">Migration of LINE@ accounts</a>.</p> | |
| </div> | |
| </div> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/insight/followers?date={date}</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal">application/json</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="query-parameters" class="h4 h4">Query parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">date</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Date for which to retrieve the number of followers. | |
| <ul> | |
| <li>Format: <code>yyyyMMdd</code> (Example: <code>20191231</code>)</li> | |
| <li>Timezone: UTC+9</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/insight/followers?date<span class="o">=</span>20190418 <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">get_number_of_followers</span><span class="p">(</span><span class="s2">"20190101"</span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns status code <code>200</code> and a JSON object with the following properties:</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">status</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Calculation status. One of: | |
| <ul> | |
| <li> | |
| <code>ready</code>: Calculation has finished. The numbers are up-to-date. </li> | |
| <li> | |
| <code>unready</code>:We haven't finished calculating followers for the specified | |
| <code>date</code>. Calculation usually takes about a day. Please try again later.</li> | |
| <li> | |
| <code>out_of_service</code>:The specified <code>date</code> is earlier than the date on which we | |
| first started calculating followers (November 1, 2016).</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">followers</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">The number of times, as of the specified <code>date</code>, that a user | |
| added this LINE official account as a friend for the first time. The number doesn't decrease even if a | |
| user later blocks the account or when they delete their LINE account.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">targetedReaches</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">The number of users, as of the specified <code>date</code>, that the | |
| official account can reach through targeted messages based on gender, age, and/or region. This number | |
| only includes users who are active on LINE or LINE services and whose demographics have a high level | |
| of certainty.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">blocks</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td style="word-break: normal">The number of users blocking the account as of the specified | |
| <code>date</code>. The number decreases when a user unblocks the account.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>Properties after <code>followers</code> are only returned if <code>status</code> is <code>ready</code>.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ready"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"followers"</span><span class="p">:</span><span class="w"> </span><span class="mi">7620</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"targetedReaches"</span><span class="p">:</span><span class="w"> </span><span class="mi">5848</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"blocks"</span><span class="p">:</span><span class="w"> </span><span class="mi">237</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-demographic" class="h3 h3">Get friend demographics</h3> | |
| <p>Retrieves the demographic attributes for a bot's friends. In addition, you can check the information of | |
| friends only for LINE official accounts created by users in Japan (JP), Thailand (TH) and Taiwan (TW). </p> | |
| <div class="annotation is-note"> | |
| <div class="annotation-header"> | |
| <i class="global-icon global-icon_note">note</i> | |
| LINE official account migration | |
| </div> | |
| <div class="annotation-body"> | |
| <p>You can't call this API with a LINE@ account or LINE official account that hasn't been migrated to the | |
| account plans implemented on April 18, 2019. Please migrate your account first. For more information, | |
| see <a href="/en/docs/messaging-api/migrating-line-at/">Migration of LINE@ accounts</a>.</p> | |
| </div> | |
| </div> | |
| <div class="annotation is-note"> | |
| <div class="annotation-header"> | |
| <i class="global-icon global-icon_note">note</i> | |
| Not real-time data | |
| </div> | |
| <div class="annotation-body"> | |
| <p>It can take up to 3 days for demographic information to be calculated. This means the information the | |
| API returns may be 3 days old. Furthermore, your <q>Target reach</q> number must be at least 20 to | |
| retrieve demographic information.</p> | |
| </div> | |
| </div> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/insight/demographic</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal">application/json</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request | |
| </p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/insight/demographic <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">get_friend_demographics</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns status code <code>200</code> and a JSON object with these properties:</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">available</td> | |
| <td class=" nowrap" style="word-break: normal">Boolean</td> | |
| <td style="word-break: normal"> | |
| <code>true</code> if friend demographic information is available.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">genders</td> | |
| <td class=" nowrap" style="word-break: normal">Array</td> | |
| <td style="word-break: normal">Percentage per gender</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">genders[].gender</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Gender</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">genders[].percentage</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Percentage</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">ages</td> | |
| <td class=" nowrap" style="word-break: normal">Array</td> | |
| <td style="word-break: normal">Percentage per age group</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">ages[].age</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Age group</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">ages[].percentage</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Percentage</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">areas</td> | |
| <td class=" nowrap" style="word-break: normal">Array</td> | |
| <td style="word-break: normal">Percentage per area</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">areas[].area</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Area</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">areas[].percentage</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Percentage</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">appTypes</td> | |
| <td class=" nowrap" style="word-break: normal">Array</td> | |
| <td style="word-break: normal">Percentage by OS</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">appTypes[].appType</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">OS</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">appTypes[].percentage</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Percentage</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">subscriptionPeriods</td> | |
| <td class=" nowrap" style="word-break: normal">Array</td> | |
| <td style="word-break: normal">Percentage per friendship duration</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">subscriptionPeriods[].subscriptionPeriod</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Friendship duration</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">subscriptionPeriods[].percentage</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Percentage</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>The elements of each Array are included in the response only if the value of <code>available</code> | |
| is<code>true</code>.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response | |
| </p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"available"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"genders"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"gender"</span><span class="p">:</span><span class="w"> </span><span class="s2">"unknown"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">37.6</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"gender"</span><span class="p">:</span><span class="w"> </span><span class="s2">"male"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">31.8</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"gender"</span><span class="p">:</span><span class="w"> </span><span class="s2">"female"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">30.6</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">],</span><span class="w"> | |
| </span><span class="s2">"ages"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"age"</span><span class="p">:</span><span class="w"> </span><span class="s2">"unknown"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">37.6</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"age"</span><span class="p">:</span><span class="w"> </span><span class="s2">"from50"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">17.3</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="err">...</span><span class="w"> | |
| </span><span class="p">],</span><span class="w"> | |
| </span><span class="s2">"areas"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"area"</span><span class="p">:</span><span class="w"> </span><span class="s2">"unknown"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">42.9</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"area"</span><span class="p">:</span><span class="w"> </span><span class="s2">"徳島"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">2.9</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="err">...</span><span class="w"> | |
| </span><span class="p">],</span><span class="w"> | |
| </span><span class="s2">"appTypes"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"appType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ios"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">62.4</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"appType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"android"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">27.7</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"appType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"others"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">9.9</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">],</span><span class="w"> | |
| </span><span class="s2">"subscriptionPeriods"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"subscriptionPeriod"</span><span class="p">:</span><span class="w"> </span><span class="s2">"over365days"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">96.4</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"subscriptionPeriod"</span><span class="p">:</span><span class="w"> </span><span class="s2">"within365days"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.9</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"subscriptionPeriod"</span><span class="p">:</span><span class="w"> </span><span class="s2">"within180days"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">1.2</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"subscriptionPeriod"</span><span class="p">:</span><span class="w"> </span><span class="s2">"within90days"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.5</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"subscriptionPeriod"</span><span class="p">:</span><span class="w"> </span><span class="s2">"within30days"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.1</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"subscriptionPeriod"</span><span class="p">:</span><span class="w"> </span><span class="s2">"within7days"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"percentage"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="profile" class="h2 h2">Profile</h2> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-profile" class="h3 h3">Get profile</h3> | |
| <p>Gets user profile information.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/profile/{userId}</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td style="word-break: normal">User ID that is returned in a <a href="#webhook-event-objects">webhook | |
| event object</a>. Do not use the LINE ID found on LINE.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/profile/<span class="o">{</span>userId<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="kd">final</span> <span class="n">LineMessagingClient</span> <span class="n">client</span> <span class="o">=</span> <span class="n">LineMessagingClient</span> | |
| <span class="o">.</span><span class="na">builder</span><span class="o">(</span><span class="s">"<channel access token>"</span><span class="o">)</span> | |
| <span class="o">.</span><span class="na">build</span><span class="o">();</span> | |
| <span class="kd">final</span> <span class="n">UserProfileResponse</span> <span class="n">userProfileResponse</span><span class="o">;</span> | |
| <span class="k">try</span> <span class="o">{</span> | |
| <span class="n">userProfileResponse</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">getProfile</span><span class="o">(</span><span class="s">"<userId>"</span><span class="o">).</span><span class="na">get</span><span class="o">();</span> | |
| <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">InterruptedException</span> <span class="o">|</span> <span class="n">ExecutionException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span> | |
| <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span> | |
| <span class="k">return</span><span class="o">;</span> | |
| <span class="o">}</span> | |
| <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">userProfileResponse</span><span class="o">.</span><span class="na">getUserId</span><span class="o">());</span> | |
| <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">userProfileResponse</span><span class="o">.</span><span class="na">getDisplayName</span><span class="o">());</span> | |
| <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">userProfileResponse</span><span class="o">.</span><span class="na">getPictureUrl</span><span class="o">());</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">res</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">GetProfile</span><span class="p">(</span><span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">Displayname</span><span class="p">)</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">PicutureURL</span><span class="p">)</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">StatusMessage</span><span class="p">)</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="s2">"<channel secret>"</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="s2">"<channel access token>"</span> | |
| <span class="p">}</span> | |
| <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="nf">get_profile</span><span class="p">(</span><span class="s2">"<userId>"</span><span class="p">)</span> | |
| <span class="k">case</span> <span class="n">response</span> | |
| <span class="k">when</span> <span class="no">Net</span><span class="o">::</span><span class="no">HTTPSuccess</span> <span class="k">then</span> | |
| <span class="n">contact</span> <span class="o">=</span> <span class="no">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="nf">body</span><span class="p">)</span> | |
| <span class="nb">p</span> <span class="n">contact</span><span class="p">[</span><span class="s1">'displayName'</span><span class="p">]</span> | |
| <span class="nb">p</span> <span class="n">contact</span><span class="p">[</span><span class="s1">'pictureUrl'</span><span class="p">]</span> | |
| <span class="nb">p</span> <span class="n">contact</span><span class="p">[</span><span class="s1">'statusMessage'</span><span class="p">]</span> | |
| <span class="k">else</span> | |
| <span class="nb">p</span> <span class="s2">"</span><span class="si">#{</span><span class="n">response</span><span class="p">.</span><span class="nf">code</span><span class="si">}</span><span class="s2"> </span><span class="si">#{</span><span class="n">response</span><span class="p">.</span><span class="nf">body</span><span class="si">}</span><span class="s2">"</span> | |
| <span class="k">end</span> | |
| </code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">getProfile</span><span class="p">(</span><span class="s1">'<userId>'</span><span class="p">);</span> | |
| <span class="k">if</span> <span class="p">(</span><span class="nv">$response</span><span class="o">-></span><span class="na">isSucceeded</span><span class="p">())</span> <span class="p">{</span> | |
| <span class="nv">$profile</span> <span class="o">=</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getJSONDecodedBody</span><span class="p">();</span> | |
| <span class="k">echo</span> <span class="nv">$profile</span><span class="p">[</span><span class="s1">'displayName'</span><span class="p">];</span> | |
| <span class="k">echo</span> <span class="nv">$profile</span><span class="p">[</span><span class="s1">'pictureUrl'</span><span class="p">];</span> | |
| <span class="k">echo</span> <span class="nv">$profile</span><span class="p">[</span><span class="s1">'statusMessage'</span><span class="p">];</span> | |
| <span class="p">}</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="k">use</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="p">;</span> | |
| <span class="k">my</span> <span class="nv">$bot</span> <span class="o">=</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="o">-></span><span class="k">new</span><span class="p">(</span> | |
| <span class="nv">channel_secret</span> <span class="o">=></span> <span class="s">"<channel secret>"</span><span class="p">,</span> | |
| <span class="nv">channel_access_token</span> <span class="o">=></span> <span class="s">"<channel access token>"</span><span class="p">,</span> | |
| <span class="p">);</span> | |
| <span class="k">my</span> <span class="nv">$res</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="nv">get_profile</span><span class="p">(</span><span class="s">"<userId>"</span><span class="p">);</span> | |
| <span class="k">unless</span> <span class="p">(</span><span class="nv">$res</span><span class="o">-></span><span class="nv">is_success</span><span class="p">)</span> <span class="p">{</span> | |
| <span class="c1"># error handling</span> | |
| <span class="o">....</span> | |
| <span class="p">}</span> | |
| <span class="nv">say</span> <span class="nv">$ret</span><span class="o">-></span><span class="nv">display_name</span><span class="p">;</span> | |
| <span class="nv">say</span> <span class="nv">$ret</span><span class="o">-></span><span class="nv">user_id</span><span class="p">;</span> | |
| <span class="nv">say</span> <span class="nv">$ret</span><span class="o">-></span><span class="nv">picture_url</span><span class="p">;</span> | |
| <span class="nv">say</span> <span class="nv">$ret</span><span class="o">-></span><span class="nv">status_message</span><span class="p">;</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="kn">from</span> <span class="nn">linebot</span> <span class="kn">import</span> <span class="n">LineBotApi</span> | |
| <span class="kn">from</span> <span class="nn">linebot.exceptions</span> <span class="kn">import</span> <span class="n">LineBotApiError</span> | |
| <span class="n">line_bot_api</span> <span class="o">=</span> <span class="n">LineBotApi</span><span class="p">(</span><span class="s">'<channel access token>'</span><span class="p">)</span> | |
| <span class="k">try</span><span class="p">:</span> | |
| <span class="n">profile</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">get_profile</span><span class="p">(</span><span class="s">'<user_id>'</span><span class="p">)</span> | |
| <span class="k">except</span> <span class="n">LineBotApiError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> | |
| <span class="c"># error handle</span> | |
| <span class="o">...</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="kd">const</span> <span class="nx">line</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'@line/bot-sdk'</span><span class="p">);</span> | |
| <span class="kd">const</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">line</span><span class="p">.</span><span class="nx">Client</span><span class="p">({</span> | |
| <span class="na">channelAccessToken</span><span class="p">:</span> <span class="s1">'<channel access token>'</span> | |
| <span class="p">});</span> | |
| <span class="nx">client</span><span class="p">.</span><span class="nx">getProfile</span><span class="p">(</span><span class="s1">'<userId>'</span><span class="p">)</span> | |
| <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">profile</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">displayName</span><span class="p">);</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">userId</span><span class="p">);</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">pictureUrl</span><span class="p">);</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">statusMessage</span><span class="p">);</span> | |
| <span class="p">})</span> | |
| <span class="p">.</span><span class="k">catch</span><span class="p">((</span><span class="nx">err</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="c1">// error handling</span> | |
| <span class="p">});</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">displayName</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">User's display name</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Identifier of the user</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">pictureUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Profile image URL. "https" image URL. Not included in the response if the | |
| user doesn't have a profile image.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">statusMessage</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">User's status message. Not included in the response if the user doesn't | |
| have a status message.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"displayName"</span><span class="p">:</span><span class="s2">"LINE taro"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="s2">"U4af4980629..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"pictureUrl"</span><span class="p">:</span><span class="s2">"https://obs.line-apps.com/..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"statusMessage"</span><span class="p">:</span><span class="s2">"Hello, LINE!"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="group" class="h2 h2">Group</h2> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-group-member-user-ids" class="h3 h3">Get group member user IDs</h3> | |
| <div class="Md108FrameNote"> | |
| <p><span class="Md07TextBold">Note:</span> This feature is available only to verified or premium accounts. | |
| For more information about account types, see the <a | |
| href="https://www.linebiz.com/jp/service/line-account-connect/" target="_blank">LINE Account Connect</a> | |
| page on the LINE for Business website. | |
| </p> | |
| </div> | |
| <p>Gets the user IDs of the members of a group that the bot is in. This includes the user IDs of users who | |
| have not added the LINE official account as a friend or has blocked the LINE official account.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/group/{groupId}/members/ids</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">groupId</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Group ID. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="query-parameters" class="h4 h4">Query parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">start</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Value of the continuation token found in the <code>next</code> property | |
| of the JSON object returned in the <a href="#get-group-member-user-ids-response">response</a>. Include | |
| this parameter to get the next array of user IDs for the members of the group.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/group/<span class="o">{</span>groupId<span class="o">}</span>/members/ids?start<span class="o">={</span>continuationToken<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">get_group_member_ids</span><span class="p">(</span><span class="o"><</span><span class="n">groupId</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">continuationToken</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">res</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">GetGroupMemberIDs</span><span class="p">(</span><span class="o"><</span><span class="n">groupId</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">continuationToken</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">for</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">id</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="k">range</span><span class="x"> </span><span class="n">res</span><span class="o">.</span><span class="n">MemberIDs</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">id</span><span class="p">)</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">getGroupMemberIds</span><span class="p">(</span><span class="o"><</span><span class="nx">groupId</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="nx">continuationToken</span><span class="o">></span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">member_ids_res</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">get_group_member_ids</span><span class="p">(</span><span class="o"><</span><span class="n">group_id</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="kd">const</span> <span class="nx">line</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'@line/bot-sdk'</span><span class="p">);</span> | |
| <span class="kd">const</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">line</span><span class="p">.</span><span class="nx">Client</span><span class="p">({</span> | |
| <span class="na">channelAccessToken</span><span class="p">:</span> <span class="s1">'<channel access token>'</span> | |
| <span class="p">});</span> | |
| <span class="nx">client</span><span class="p">.</span><span class="nx">getGroupMemberIds</span><span class="p">(</span><span class="s1">'<groupId>'</span><span class="p">)</span> | |
| <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">ids</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="nx">ids</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">id</span><span class="p">)</span> <span class="o">=></span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">id</span><span class="p">));</span> | |
| <span class="p">})</span> | |
| <span class="p">.</span><span class="k">catch</span><span class="p">((</span><span class="nx">err</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="c1">// error handling</span> | |
| <span class="p">});</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="get-group-member-user-ids-response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the following properties.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">memberIds</td> | |
| <td style="word-break: normal">Array of strings</td> | |
| <td style="word-break: normal">List of user IDs of members in the group. Users of LINE version 7.4.x or | |
| earlier are not included in <code>memberIds</code>. For more information, see <a | |
| href="/en/docs/messaging-api/user-consent/">User consent</a>. <br> | |
| Max: 100 user IDs</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">next</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">A continuation token to get the next array of user IDs of the members in | |
| the group. Returned only when there are remaining user IDs that were not returned in | |
| <code>memberIds</code> in the original request.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"memberIds"</span><span class="p">:[</span><span class="w"> | |
| </span><span class="s2">"U4af4980629..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"U0c229f96c4..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"U95afb1d4df..."</span><span class="w"> | |
| </span><span class="p">],</span><span class="w"> | |
| </span><span class="s2">"next"</span><span class="p">:</span><span class="s2">"jxEWCEEP..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-group-member-profile" class="h3 h3">Get group member profile</h3> | |
| <p>Gets the user profile of a member of a group that the LINE official account is in if the user ID of the | |
| group member is known. You can get user profiles of users who have not added the LINE official account as a | |
| friend or have blocked the LINE official account.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/group/{groupId}/member/{userId}</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">groupId</td> | |
| <td style="word-break: normal">Group ID. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td style="word-break: normal">User ID. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>. Do not use the LINE ID used in LINE.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/group/<span class="o">{</span>groupId<span class="o">}</span>/member/<span class="o">{</span>userId<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">get_group_member_profile</span><span class="p">(</span><span class="o"><</span><span class="n">groupId</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">res</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">GetGroupMemberProfile</span><span class="p">(</span><span class="o"><</span><span class="n">groupId</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">Displayname</span><span class="p">)</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">PicutureURL</span><span class="p">)</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">getGroupMemberProfile</span><span class="p">(</span><span class="o"><</span><span class="nx">groupId</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="nx">userId</span><span class="o">></span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">profile</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">get_group_member_profile</span><span class="p">(</span><span class="o"><</span><span class="n">group_id</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">user_id</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="kd">const</span> <span class="nx">line</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'@line/bot-sdk'</span><span class="p">);</span> | |
| <span class="kd">const</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">line</span><span class="p">.</span><span class="nx">Client</span><span class="p">({</span> | |
| <span class="na">channelAccessToken</span><span class="p">:</span> <span class="s1">'<channel access token>'</span> | |
| <span class="p">});</span> | |
| <span class="nx">client</span><span class="p">.</span><span class="nx">getGroupMemberProfile</span><span class="p">(</span><span class="s1">'<groupId>'</span><span class="p">,</span> <span class="s1">'<userId>'</span><span class="p">)</span> | |
| <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">profile</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">displayName</span><span class="p">);</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">userId</span><span class="p">);</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">pictureUrl</span><span class="p">);</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">statusMessage</span><span class="p">);</span> | |
| <span class="p">})</span> | |
| <span class="p">.</span><span class="k">catch</span><span class="p">((</span><span class="nx">err</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="c1">// error handling</span> | |
| <span class="p">});</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">displayName</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Display name</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">User ID</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">pictureUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Profile image URL</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"displayName"</span><span class="p">:</span><span class="s2">"LINE taro"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="s2">"U4af4980629..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"pictureUrl"</span><span class="p">:</span><span class="s2">"https://obs.line-apps.com/..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="leave-group" class="h3 h3">Leave group</h3> | |
| <p>Leaves a <a href="/en/docs/messaging-api/group-chats/#group">group</a>.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/group/{groupId}/leave</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">groupId</td> | |
| <td style="word-break: normal">Group ID. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/group/<span class="o">{</span>groupId<span class="o">}</span>/leave <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="kd">final</span> <span class="n">LineMessagingClient</span> <span class="n">client</span> <span class="o">=</span> <span class="n">LineMessagingClient</span> | |
| <span class="o">.</span><span class="na">builder</span><span class="o">(</span><span class="s">"<channel access token>"</span><span class="o">)</span> | |
| <span class="o">.</span><span class="na">build</span><span class="o">();</span> | |
| <span class="kd">final</span> <span class="n">BotApiResponse</span> <span class="n">botApiResponse</span><span class="o">;</span> | |
| <span class="k">try</span> <span class="o">{</span> | |
| <span class="n">botApiResponse</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">leaveGroup</span><span class="o">(</span><span class="s">"<roomId>"</span><span class="o">).</span><span class="na">get</span><span class="o">();</span> | |
| <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">InterruptedException</span> <span class="o">|</span> <span class="n">ExecutionException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span> | |
| <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span> | |
| <span class="k">return</span><span class="o">;</span> | |
| <span class="o">}</span> | |
| <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">botApiResponse</span><span class="o">);</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">LeaveGroup</span><span class="p">(</span><span class="o"><</span><span class="n">groupId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="s2">"<channel secret>"</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="s2">"<channel access token>"</span> | |
| <span class="p">}</span> | |
| <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="nf">leave_group</span><span class="p">(</span><span class="s2">"<groupId>"</span><span class="p">)</span> | |
| <span class="nb">p</span> <span class="n">response</span><span class="p">.</span><span class="nf">body</span> | |
| </code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">leaveGroup</span><span class="p">(</span><span class="s1">'<groupId>'</span><span class="p">);</span> | |
| <span class="k">echo</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getHTTPStatus</span><span class="p">()</span> <span class="o">.</span> <span class="s1">' '</span> <span class="o">.</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getRawBody</span><span class="p">();</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="k">use</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="p">;</span> | |
| <span class="k">my</span> <span class="nv">$bot</span> <span class="o">=</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="o">-></span><span class="k">new</span><span class="p">(</span> | |
| <span class="nv">channel_secret</span> <span class="o">=></span> <span class="s">"<channel secret>"</span><span class="p">,</span> | |
| <span class="nv">channel_access_token</span> <span class="o">=></span> <span class="s">"<channel access token>"</span><span class="p">,</span> | |
| <span class="p">);</span> | |
| <span class="k">my</span> <span class="nv">$res</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="nv">leave_group</span><span class="p">(</span><span class="s">"<groupId>"</span><span class="p">);</span> | |
| <span class="k">unless</span> <span class="p">(</span><span class="nv">$res</span><span class="o">-></span><span class="nv">is_success</span><span class="p">)</span> <span class="p">{</span> | |
| <span class="c1"># error handling</span> | |
| <span class="o">....</span> | |
| <span class="p">}</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="kn">from</span> <span class="nn">linebot</span> <span class="kn">import</span> <span class="n">LineBotApi</span> | |
| <span class="kn">from</span> <span class="nn">linebot.exceptions</span> <span class="kn">import</span> <span class="n">LineBotApiError</span> | |
| <span class="n">line_bot_api</span> <span class="o">=</span> <span class="n">LineBotApi</span><span class="p">(</span><span class="s">'<channel access token>'</span><span class="p">)</span> | |
| <span class="k">try</span><span class="p">:</span> | |
| <span class="n">line_bot_api</span><span class="o">.</span><span class="n">leave_group</span><span class="p">(</span><span class="s">'<group_id>'</span><span class="p">)</span> | |
| <span class="k">except</span> <span class="n">LineBotApiError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> | |
| <span class="c"># error handle</span> | |
| <span class="o">...</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="kd">const</span> <span class="nx">line</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'@line/bot-sdk'</span><span class="p">);</span> | |
| <span class="kd">const</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">line</span><span class="p">.</span><span class="nx">Client</span><span class="p">({</span> | |
| <span class="na">channelAccessToken</span><span class="p">:</span> <span class="s1">'<channel access token>'</span> | |
| <span class="p">});</span> | |
| <span class="nx">client</span><span class="p">.</span><span class="nx">leaveGroup</span><span class="p">(</span><span class="s1">'<groupId>'</span><span class="p">)</span> | |
| <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="p">...</span> | |
| <span class="p">})</span> | |
| <span class="p">.</span><span class="k">catch</span><span class="p">((</span><span class="nx">err</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="c1">// error handling</span> | |
| <span class="p">});</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="room" class="h2 h2">Room</h2> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-room-member-user-ids" class="h3 h3">Get room member user IDs</h3> | |
| <div class="Md108FrameNote"> | |
| <p><span class="Md07TextBold">Note:</span> This feature is available only to verified or premium accounts. | |
| For more information about account types, see the <a | |
| href="https://www.linebiz.com/jp/service/line-account-connect/" target="_blank">LINE Account Connect</a> | |
| page on the LINE for Business website. | |
| </p> | |
| </div> | |
| <p>Gets the user IDs of the members of a room that the LINE official account is in. This includes the user IDs | |
| of users who have not added the LINE official account as a friend or have blocked the LINE official account. | |
| </p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/room/{roomId}/members/ids</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">roomId</td> | |
| <td class=" nowrap" style="word-break: normal">必須</td> | |
| <td style="word-break: normal">Room ID. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="query-parameters" class="h4 h4">Query parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">start</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Value of the continuation token found in the <code>next</code> property | |
| of the JSON object returned in the <a href="#get-room-member-user-ids-response">response</a>. Include | |
| this parameter to get the next array of user IDs for the members of the group.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/room/<span class="o">{</span>roomId<span class="o">}</span>/members/ids?start<span class="o">={</span>continuationToken<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">get_room_member_ids</span><span class="p">(</span><span class="o"><</span><span class="n">roomId</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">continuationToken</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">res</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">GetRoomMemberIDs</span><span class="p">(</span><span class="o"><</span><span class="n">roomId</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">continuationToken</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">for</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">id</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="k">range</span><span class="x"> </span><span class="n">res</span><span class="o">.</span><span class="n">MemberIDs</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">id</span><span class="p">)</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">getRoomMemberIds</span><span class="p">(</span><span class="s1">'<roomId>'</span><span class="p">,</span> <span class="s1">'<continuationToken>'</span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">member_ids_res</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">get_room_member_ids</span><span class="p">(</span><span class="o"><</span><span class="n">room_id</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="kd">const</span> <span class="nx">line</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'@line/bot-sdk'</span><span class="p">);</span> | |
| <span class="kd">const</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">line</span><span class="p">.</span><span class="nx">Client</span><span class="p">({</span> | |
| <span class="na">channelAccessToken</span><span class="p">:</span> <span class="s1">'<channel access token>'</span> | |
| <span class="p">});</span> | |
| <span class="nx">client</span><span class="p">.</span><span class="nx">getRoomMemberIds</span><span class="p">(</span><span class="s1">'<roomId>'</span><span class="p">)</span> | |
| <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">ids</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="nx">ids</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">id</span><span class="p">)</span> <span class="o">=></span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">id</span><span class="p">));</span> | |
| <span class="p">})</span> | |
| <span class="p">.</span><span class="k">catch</span><span class="p">((</span><span class="nx">err</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="c1">// error handling</span> | |
| <span class="p">});</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="get-room-member-user-ids-response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the following properties.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">memberIds</td> | |
| <td style="word-break: normal">Array of strings</td> | |
| <td style="word-break: normal">List of user IDs of the members in the room. Users of LINE version 7.4.x | |
| or earlier are not included in <code>memberIds</code>. For more information, see <a | |
| href="/en/docs/messaging-api/user-consent/">User consent</a>. <br> | |
| Max: 100 user IDs</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">next</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">A continuation token to get the next array of user IDs of the members in | |
| the room. Returned only when there are remaining user IDs that were not returned in | |
| <code>memberIds</code> in the original request.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"memberIds"</span><span class="p">:[</span><span class="w"> | |
| </span><span class="s2">"U4af4980629..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"U0c229f96c4..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"U95afb1d4df..."</span><span class="w"> | |
| </span><span class="p">],</span><span class="w"> | |
| </span><span class="s2">"next"</span><span class="p">:</span><span class="s2">"jxEWCEEP..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-room-member-profile" class="h3 h3">Get room member profile</h3> | |
| <p>Gets the user profile of a member of a room that the LINE official account is in if the user ID of the room | |
| member is known. You can get user profiles of users who have not added the LINE official account as a friend | |
| or have blocked the LINE official account.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/room/{roomId}/member/{userId}</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">roomId</td> | |
| <td style="word-break: normal">Room ID. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td style="word-break: normal">User ID. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>. Do not use the LINE ID used in LINE.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/room/<span class="o">{</span>roomId<span class="o">}</span>/member/<span class="o">{</span>userId<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">get_room_member_profile</span><span class="p">(</span><span class="o"><</span><span class="n">roomId</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">res</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">GetRoomMemberProfile</span><span class="p">(</span><span class="o"><</span><span class="n">roomId</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">Displayname</span><span class="p">)</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">PicutureURL</span><span class="p">)</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">getRoomMemberProfile</span><span class="p">(</span><span class="o"><</span><span class="nx">roomId</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="nx">userId</span><span class="o">></span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">profile</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">get_room_member_profile</span><span class="p">(</span><span class="o"><</span><span class="n">room_id</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">user_id</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="kd">const</span> <span class="nx">line</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'@line/bot-sdk'</span><span class="p">);</span> | |
| <span class="kd">const</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">line</span><span class="p">.</span><span class="nx">Client</span><span class="p">({</span> | |
| <span class="na">channelAccessToken</span><span class="p">:</span> <span class="s1">'<channel access token>'</span> | |
| <span class="p">});</span> | |
| <span class="nx">client</span><span class="p">.</span><span class="nx">getRoomMemberProfile</span><span class="p">(</span><span class="s1">'<roomId>'</span><span class="p">,</span> <span class="s1">'<userId>'</span><span class="p">)</span> | |
| <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">profile</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">displayName</span><span class="p">);</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">userId</span><span class="p">);</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">pictureUrl</span><span class="p">);</span> | |
| <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">profile</span><span class="p">.</span><span class="nx">statusMessage</span><span class="p">);</span> | |
| <span class="p">})</span> | |
| <span class="p">.</span><span class="k">catch</span><span class="p">((</span><span class="nx">err</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="c1">// error handling</span> | |
| <span class="p">});</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the following information.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">displayName</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Display name</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">User ID</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">pictureUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Profile image URL</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"displayName"</span><span class="p">:</span><span class="s2">"LINE taro"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"userId"</span><span class="p">:</span><span class="s2">"U4af4980629..."</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"pictureUrl"</span><span class="p">:</span><span class="s2">"https://obs.line-apps.com/..."</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="leave-room" class="h3 h3">Leave room</h3> | |
| <p>Leaves a <a href="/en/docs/messaging-api/group-chats/#room">room</a>.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/room/{roomId}/leave</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">roomId</td> | |
| <td style="word-break: normal">Room ID. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/room/<span class="o">{</span>roomId<span class="o">}</span>/leave <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="kd">final</span> <span class="n">LineMessagingClient</span> <span class="n">client</span> <span class="o">=</span> <span class="n">LineMessagingClient</span> | |
| <span class="o">.</span><span class="na">builder</span><span class="o">(</span><span class="s">"<channel access token>"</span><span class="o">)</span> | |
| <span class="o">.</span><span class="na">build</span><span class="o">();</span> | |
| <span class="kd">final</span> <span class="n">BotApiResponse</span> <span class="n">botApiResponse</span><span class="o">;</span> | |
| <span class="k">try</span> <span class="o">{</span> | |
| <span class="n">botApiResponse</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">leaveRoom</span><span class="o">(</span><span class="s">"<roomId>"</span><span class="o">).</span><span class="na">get</span><span class="o">();</span> | |
| <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">InterruptedException</span> <span class="o">|</span> <span class="n">ExecutionException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span> | |
| <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span> | |
| <span class="k">return</span><span class="o">;</span> | |
| <span class="o">}</span> | |
| <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">botApiResponse</span><span class="o">);</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">LeaveRoom</span><span class="p">(</span><span class="o"><</span><span class="n">roomId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="s2">"<channel secret>"</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="s2">"<channel access token>"</span> | |
| <span class="p">}</span> | |
| <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="nf">leave_room</span><span class="p">(</span><span class="s2">"<roomId>"</span><span class="p">)</span> | |
| <span class="nb">p</span> <span class="n">response</span><span class="p">.</span><span class="nf">body</span> | |
| </code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">leaveRoom</span><span class="p">(</span><span class="s1">'<roomId>'</span><span class="p">);</span> | |
| <span class="k">echo</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getHTTPStatus</span><span class="p">()</span> <span class="o">.</span> <span class="s1">' '</span> <span class="o">.</span> <span class="nv">$response</span><span class="o">-></span><span class="na">getRawBody</span><span class="p">();</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="k">use</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="p">;</span> | |
| <span class="k">my</span> <span class="nv">$bot</span> <span class="o">=</span> <span class="nn">LINE::Bot::</span><span class="nv">API</span><span class="o">-></span><span class="k">new</span><span class="p">(</span> | |
| <span class="nv">channel_secret</span> <span class="o">=></span> <span class="s">"<channel secret>"</span><span class="p">,</span> | |
| <span class="nv">channel_access_token</span> <span class="o">=></span> <span class="s">"<channel access token>"</span><span class="p">,</span> | |
| <span class="p">);</span> | |
| <span class="k">my</span> <span class="nv">$res</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="nv">leave_room</span><span class="p">(</span><span class="s">"<roomId>"</span><span class="p">);</span> | |
| <span class="k">unless</span> <span class="p">(</span><span class="nv">$res</span><span class="o">-></span><span class="nv">is_success</span><span class="p">)</span> <span class="p">{</span> | |
| <span class="c1"># error handling</span> | |
| <span class="o">....</span> | |
| <span class="p">}</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="kn">from</span> <span class="nn">linebot</span> <span class="kn">import</span> <span class="n">LineBotApi</span> | |
| <span class="kn">from</span> <span class="nn">linebot.exceptions</span> <span class="kn">import</span> <span class="n">LineBotApiError</span> | |
| <span class="n">line_bot_api</span> <span class="o">=</span> <span class="n">LineBotApi</span><span class="p">(</span><span class="s">'<channel access token>'</span><span class="p">)</span> | |
| <span class="k">try</span><span class="p">:</span> | |
| <span class="n">line_bot_api</span><span class="o">.</span><span class="n">leave_room</span><span class="p">(</span><span class="s">'<room_id>'</span><span class="p">)</span> | |
| <span class="k">except</span> <span class="n">LineBotApiError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> | |
| <span class="c"># error handle</span> | |
| <span class="o">...</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="kd">const</span> <span class="nx">line</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'@line/bot-sdk'</span><span class="p">);</span> | |
| <span class="kd">const</span> <span class="nx">client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">line</span><span class="p">.</span><span class="nx">Client</span><span class="p">({</span> | |
| <span class="na">channelAccessToken</span><span class="p">:</span> <span class="s1">'<channel access token>'</span> | |
| <span class="p">});</span> | |
| <span class="nx">client</span><span class="p">.</span><span class="nx">leaveRoom</span><span class="p">(</span><span class="s1">'<roomId>'</span><span class="p">)</span> | |
| <span class="p">.</span><span class="nx">then</span><span class="p">(()</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="p">...</span> | |
| <span class="p">})</span> | |
| <span class="p">.</span><span class="k">catch</span><span class="p">((</span><span class="nx">err</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span> | |
| <span class="c1">// error handling</span> | |
| <span class="p">});</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="rich-menu" class="h2 h2">Rich menu</h2> | |
| <div class="Md108FrameNote"> | |
| <p><span class="Md07TextBold">Note: </span>Rich menus created using the Messaging API are only supported on | |
| LINE 7.14.0 and later for Android and iOS. | |
| </p> | |
| </div> | |
| <p>Customizable menu that is displayed on your LINE official account's chat screen. For more information, see | |
| <a href="/en/docs/messaging-api/using-rich-menus/">Using rich menus</a>. </p> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="create-rich-menu" class="h3 h3">Create rich menu</h3> | |
| <p>Creates a rich menu. </p> | |
| <p>You must <a href="#upload-rich-menu-image">upload a rich menu image</a>, and <a | |
| href="#set-default-rich-menu">set the rich menu as the default rich menu</a> or <a | |
| href="#link-rich-menu-to-user">link the rich menu to a user</a> for the rich menu to be displayed. You can | |
| create up to 1000 rich menus for one LINE official account with the Messaging API.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/richmenu</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal"><code>application/json</code></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="request-body" class="h4 h4">Request body</h4> | |
| <p>The rich menu represented as a <a href="#rich-menu-object">rich menu object</a>.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/richmenu <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Content-Type: application/json'</span> <span class="se">\</span> | |
| <span class="nt">-d</span> <span class="se">\</span> | |
| <span class="s1">'{ | |
| "size": { | |
| "width": 2500, | |
| "height": 1686 | |
| }, | |
| "selected": false, | |
| "name": "Nice richmenu", | |
| "chatBarText": "Tap here", | |
| "areas": [ | |
| { | |
| "bounds": { | |
| "x": 0, | |
| "y": 0, | |
| "width": 2500, | |
| "height": 1686 | |
| }, | |
| "action": { | |
| "type": "postback", | |
| "data": "action=buy&itemid=123" | |
| } | |
| } | |
| ] | |
| }'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">rich_menu</span> <span class="o">=</span> <span class="p">{</span> | |
| <span class="o"><</span><span class="n">rich</span> <span class="n">menu</span> <span class="n">content</span><span class="o">></span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">create_rich_menu</span><span class="p">(</span><span class="n">rich_menu</span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">richMemu</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">RichMenu</span><span class="p">{</span><span class="x"> </span><span class="o">...</span><span class="x"> </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">res</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">CreateRichMenu</span><span class="p">(</span><span class="n">richMemu</span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="n">t</span><span class="o">.</span><span class="n">Error</span><span class="p">(</span><span class="n">err</span><span class="o">.</span><span class="n">Error</span><span class="p">())</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">RichMenuID</span><span class="p">)</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$richMenuBuilder</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\RichMenuBuilder</span><span class="p">(</span><span class="o">...</span><span class="p">)</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">createRichMenu</span><span class="p">(</span><span class="nv">$richMenuBuilder</span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">rich_menu_to_create</span> <span class="o">=</span> <span class="n">RichMenu</span><span class="p">(</span> | |
| <span class="n">size</span><span class="o">=</span><span class="n">RichMenuSize</span><span class="p">(</span><span class="n">width</span><span class="o">=</span><span class="mi">2500</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">843</span><span class="p">),</span> | |
| <span class="n">selected</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> | |
| <span class="n">name</span><span class="o">=</span><span class="s">"Nice richmenu"</span><span class="p">,</span> | |
| <span class="n">chat_bar_text</span><span class="o">=</span><span class="s">"Tap here"</span><span class="p">,</span> | |
| <span class="n">areas</span><span class="o">=</span><span class="p">[</span><span class="n">RichMenuArea</span><span class="p">(</span> | |
| <span class="n">bounds</span><span class="o">=</span><span class="n">RichMenuBounds</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">2500</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">843</span><span class="p">),</span> | |
| <span class="n">action</span><span class="o">=</span><span class="n">URIAction</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s">'Go to line.me'</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="s">'https://line.me'</span><span class="p">))]</span> | |
| <span class="p">)</span> | |
| <span class="n">rich_menu_id</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">create_rich_menu</span><span class="p">(</span><span class="n">rich_menu</span><span class="o">=</span><span class="n">rich_menu_to_create</span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and the ID of the rich menu. </p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"richMenuId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"{richMenuId}"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="upload-rich-menu-image" class="h3 h3">Upload rich menu image</h3> | |
| <p>Uploads and attaches an image to a rich menu.</p> | |
| <p>You can use rich menu images with the following specifications:</p> | |
| <ul> | |
| <li>Image format: JPEG or PNG</li> | |
| <li>Image size (pixels): 2500x1686, 2500x843, 1200x810, 1200x405, 800x540, 800x270</li> | |
| <li>Maximum file size: 1 MB</li> | |
| </ul> | |
| <p>Note: You cannot replace an image attached to a rich menu. To update your rich menu image, create a new | |
| rich menu object and upload another image.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/richmenu/{richMenuId}/content</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal"> | |
| <code>image/jpeg</code> or <code>image/png</code> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Content-Length</td> | |
| <td style="word-break: normal">The length of the request body in octets (8-bit bytes). Must be a | |
| non-negative value.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">richMenuId</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">The ID of the rich menu to attach the image to</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/richmenu/<span class="o">{</span>richMenuId<span class="o">}</span>/content <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s2">"Authorization: Bearer {channel access token}"</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s2">"Content-Type: image/jpeg"</span> <span class="se">\</span> | |
| <span class="nt">-T</span> image.jpg | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">create_rich_menu_image</span><span class="p">(</span><span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">file</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">UploadRichMenuImage</span><span class="p">(</span><span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">imagePath</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$imagePath</span> <span class="o">=</span> <span class="s1">'/path/to/image.jpeg'</span><span class="p">;</span> | |
| <span class="nv">$contentType</span> <span class="o">=</span> <span class="s1">'image/jpeg'</span><span class="p">;</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">uploadRichMenuImage</span><span class="p">(</span><span class="o"><</span><span class="nx">richMenuId</span><span class="o">></span><span class="p">,</span> <span class="nv">$imagePath</span><span class="p">,</span> <span class="nv">$contentType</span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="o"><</span><span class="n">file_path</span><span class="o">></span><span class="p">,</span> <span class="s">'rb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> | |
| <span class="n">line_bot_api</span><span class="o">.</span><span class="n">set_rich_menu_image</span><span class="p">(</span><span class="o"><</span><span class="n">rich_menu_id</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">content_type</span><span class="o">></span><span class="p">,</span> <span class="n">f</span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="download-rich-menu-image" class="h3 h3">Download rich menu image</h3> | |
| <p>Downloads an image associated with a rich menu.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/richmenu/{richMenuId}/content</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">richMenuId</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">ID of the rich menu with the image to be downloaded</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and the binary data of the rich menu image. The image can be | |
| downloaded as shown in the example request.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET <span class="s2">"https://api.line.me/v2/bot/richmenu/{richMenuId}/content"</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> <span class="se">\</span> | |
| <span class="nt">-o</span> picture.jpg | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">get_rich_menu_image</span><span class="p">(</span><span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">content</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">DownloadRichMenuImage</span><span class="p">(</span><span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">defer</span><span class="x"> </span><span class="n">content</span><span class="o">.</span><span class="n">Content</span><span class="o">.</span><span class="n">Close</span><span class="p">()</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">downloadRichMenuImage</span><span class="p">(</span><span class="o"><</span><span class="nx">richMenuId</span><span class="o">></span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">content</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">get_rich_menu_image</span><span class="p">(</span><span class="o"><</span><span class="n">rich_menu_id</span><span class="o">></span><span class="p">)</span> | |
| <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="s">'wb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fd</span><span class="p">:</span> | |
| <span class="k">for</span> <span class="n">chunk</span> <span class="ow">in</span> <span class="n">content</span><span class="o">.</span><span class="n">iter_content</span><span class="p">():</span> | |
| <span class="n">fd</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">chunk</span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-rich-menu-list" class="h3 h3">Get rich menu list</h3> | |
| <p>Gets a list of all rich menus created by <a href="#create-rich-menu">Create rich menu</a>.</p> | |
| <p>Note: You can't retrieve rich menus created with LINE Official Account Manager.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/richmenu/list</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/richmenu/list <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">get_rich_menus</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">res</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">GetRichMenuList</span><span class="p">()</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">for</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">richMenu</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="k">range</span><span class="x"> </span><span class="n">res</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">richMenu</span><span class="o">.</span><span class="n">RichMenuID</span><span class="p">)</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">getRichMenuList</span><span class="p">();</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="kn">from</span> <span class="nn">linebot</span> <span class="kn">import</span> <span class="n">LineBotApi</span> | |
| <span class="kn">from</span> <span class="nn">linebot.exceptions</span> <span class="kn">import</span> <span class="n">LineBotApiError</span> | |
| <span class="n">rich_menu_list</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">get_rich_menu_list</span><span class="p">()</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a list of <a href="#rich-menu-response-object">rich menu | |
| response objects</a>.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">richmenus</td> | |
| <td class=" nowrap" style="word-break: normal">Array</td> | |
| <td style="word-break: normal">Array of <a href="#rich-menu-response-object">rich menu response | |
| objects</a> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"richmenus"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"richMenuId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"{richMenuId}"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">2500</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1686</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"selected"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"areas"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"bounds"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">2500</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1686</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"action"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=buy&itemid=123"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-rich-menu" class="h3 h3">Get rich menu</h3> | |
| <p>Gets a rich menu via a rich menu ID.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/richmenu/{richMenuId}</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">richMenuId</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">ID of an uploaded rich menu</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/richmenu/<span class="o">{</span>richMenuId<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">get_rich_menu</span><span class="p">(</span><span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">res</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">GetRichMenu</span><span class="p">(</span><span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">RichMenuID</span><span class="p">)</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">getRichMenu</span><span class="p">(</span><span class="o"><</span><span class="nx">richMenuId</span><span class="o">></span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">rich_menu</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">get_rich_menu</span><span class="p">(</span><span class="n">rich_menu_id</span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a <a href="#rich-menu-response-object">rich menu response | |
| object</a>.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"richMenuId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"{richMenuId}"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">2500</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1686</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"selected"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"areas"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"bounds"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">2500</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1686</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"action"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=buy&itemid=123"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="delete-rich-menu" class="h3 h3">Delete rich menu</h3> | |
| <p>Deletes a rich menu.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>DELETE https://api.line.me/v2/bot/richmenu/{richMenuId}</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">richMenuId</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">ID of an uploaded rich menu</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> DELETE https://api.line.me/v2/bot/richmenu/<span class="o">{</span>richMenuId<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">delete_rich_menu</span><span class="p">(</span><span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">DeleteRichMenu</span><span class="p">(</span><span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">deleteRichMenu</span><span class="p">(</span><span class="o"><</span><span class="nx">richMenuId</span><span class="o">></span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">line_bot_api</span><span class="o">.</span><span class="n">delete_rich_menu</span><span class="p">(</span><span class="o"><</span><span class="n">rich_menu_id</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="set-default-rich-menu" class="h3 h3">Set default rich menu</h3> | |
| <p>Sets the default rich menu. The default rich menu is displayed to all users who have added your LINE | |
| official account as a friend and are not linked to any per-user rich menu.</p> | |
| <p>The rich menu is displayed in the following order of priority (highest to lowest):</p> | |
| <ol class="decimal"> | |
| <li>The per-user rich menu set with the Messaging API</li> | |
| <li>The <a href="#set-default-rich-menu">default rich menu set with the Messaging API</a> | |
| </li> | |
| <li>The <a | |
| href="/en/docs/messaging-api/using-rich-menus/#creating-a-rich-menu-with-the-line-manager">default rich | |
| menu set with LINE Official Account Manager</a> | |
| </li> | |
| </ol> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/user/all/richmenu/{richMenuId}</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">richMenuId</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">ID of an uploaded rich menu</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/user/all/richmenu/<span class="o">{</span>richMenuId<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s2">"Authorization: Bearer {channel access token}"</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">set_default_rich_menu</span><span class="p">(</span><span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">SetDefaultRichMenu</span><span class="p">(</span><span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-default-rich-menu-id" class="h3 h3">Get default rich menu ID</h3> | |
| <p>Gets the ID of the default rich menu set with the Messaging API.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/user/all/richmenu</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/user/all/richmenu <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="s2">"<channel secret>"</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="s2">"<channel access token>"</span> | |
| <span class="p">}</span> | |
| <span class="nb">p</span> <span class="n">client</span><span class="p">.</span><span class="nf">get_default_rich_menu</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">res</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">GetDefaultRichMenu</span><span class="p">()</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">RichMenuID</span><span class="p">)</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the rich menu ID.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"richMenuId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"{richMenuId}"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="cancel-default-rich-menu" class="h3 h3">Cancel default rich menu</h3> | |
| <p>Cancels the default rich menu set with the Messaging API.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>DELETE https://api.line.me/v2/bot/user/all/richmenu</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> DELETE https://api.line.me/v2/bot/user/all/richmenu <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">unset_default_rich_menu</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">CancelDefaultRichMenu</span><span class="p">()</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="link-rich-menu-to-user" class="h3 h3">Link rich menu to user</h3> | |
| <p>Links a rich menu to a user. Only one rich menu can be linked to a user at one time.</p> | |
| <p>The rich menu is displayed in the following order of priority (highest to lowest):</p> | |
| <ol class="decimal"> | |
| <li>The per-user rich menu set with the Messaging API</li> | |
| <li>The <a href="#set-default-rich-menu">default rich menu set with the Messaging API</a> | |
| </li> | |
| <li>The <a | |
| href="/en/docs/messaging-api/using-rich-menus/#creating-a-rich-menu-with-the-line-manager">default rich | |
| menu set with LINE Official Account Manager</a> | |
| </li> | |
| </ol> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/user/{userId}/richmenu/{richMenuId}</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">richMenuId</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">ID of an uploaded rich menu</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">User ID. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>. Do not use the LINE ID used in LINE.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/user/<span class="o">{</span>userId<span class="o">}</span>/richmenu/<span class="o">{</span>richMenuId<span class="o">}</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s2">"Authorization: Bearer {channel access token}"</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">link_user_rich_menu</span><span class="p">(</span><span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">LinkUserRichMenu</span><span class="p">(</span><span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">linkRichMenu</span><span class="p">(</span><span class="o"><</span><span class="nx">userId</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="nx">richMenuId</span><span class="o">></span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">line_bot_api</span><span class="o">.</span><span class="n">link_rich_menu_to_user</span><span class="p">(</span><span class="o"><</span><span class="n">user_id</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">rich_menu_id</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="link-rich-menu-to-users" class="h3 h3">Link rich menu to multiple users</h3> | |
| <p>Links a rich menu to multiple users.</p> | |
| <p>The rich menu is displayed in the following order of priority (highest to lowest): </p> | |
| <ol class="decimal"> | |
| <li>The per-user rich menu set with the Messaging API</li> | |
| <li>The <a href="#set-default-rich-menu">default rich menu set with the Messaging API</a> | |
| </li> | |
| <li>The <a | |
| href="/en/docs/messaging-api/using-rich-menus/#creating-a-rich-menu-with-the-line-manager">default rich | |
| menu set with LINE Official Account Manager</a> | |
| </li> | |
| </ol> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/richmenu/bulk/link</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal">application/json</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="request-body" class="h4 h4">Request body</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">richMenuId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">ID of an uploaded rich menu</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userIds</td> | |
| <td style="word-break: normal">Array of strings</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Array of user IDs. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>. Do not use the LINE ID used in LINE. <br> | |
| Max: 150 user IDs</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/richmenu/bulk/link <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s2">"Authorization: Bearer {channel access token}"</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span> | |
| <span class="nt">-d</span> <span class="s1">'{ | |
| "richMenuId":"{richMenuId}", | |
| "userIds":["{userId1}","{userId2}"] | |
| }'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">bulk_link_rich_menus</span><span class="p">([</span><span class="o"><</span><span class="n">userId1</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">userId2</span><span class="o">></span><span class="p">],</span> <span class="o"><</span><span class="n">richMenuId</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>202</code> and an empty JSON object.</p> | |
| <p>Unlike <a href="#link-rich-menu-to-user">linking a rich menu to a user</a>, this request is processed | |
| asynchronously in the background. Normally, the process is completed within a few seconds.</p> | |
| <p>To verify whether the request was processed successfully, <a | |
| href="/en/reference/messaging-api/#get-rich-menu-id-of-user">get the rich menu ID linked to the users</a> | |
| and check if the rich menu is actually linked to the users.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="get-rich-menu-id-of-user" class="h3 h3">Get rich menu ID of user</h3> | |
| <p>Gets the ID of the rich menu linked to a user.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>GET https://api.line.me/v2/bot/user/{userId}/richmenu</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">User ID. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>. Do not use the LINE ID used in LINE.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> GET https://api.line.me/v2/bot/user/<span class="o">{</span>userId<span class="o">}</span>/richmenu <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">get_user_rich_menu</span><span class="p">(</span><span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">res</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">GetUserRichMenu</span><span class="p">(</span><span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">RichMenuID</span><span class="p">)</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">getRichMenuId</span><span class="p">(</span><span class="o"><</span><span class="nx">userId</span><span class="o">></span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">rich_menu_id</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">get_rich_menu_id_of_user</span><span class="p">(</span><span class="o"><</span><span class="n">user_id</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a JSON object with the rich menu ID.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"richMenuId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"{richMenuId}"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="unlink-rich-menu-from-user" class="h3 h3">Unlink rich menu from user</h3> | |
| <p>Unlinks a rich menu from a user.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>DELETE https://api.line.me/v2/bot/user/{userId}/richmenu</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">User ID. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>. Do not use the LINE ID used in LINE.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> DELETE https://api.line.me/v2/bot/user/<span class="o">{</span>userId<span class="o">}</span>/richmenu <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">unlink_user_rich_menu</span><span class="p">(</span><span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">_</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">UnlinkUserRichMenu</span><span class="p">(</span><span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$bot</span><span class="o">-></span><span class="na">unlinkRichMenu</span><span class="p">(</span><span class="o"><</span><span class="nx">userId</span><span class="o">></span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">line_bot_api</span><span class="o">.</span><span class="n">unlink_rich_menu_from_user</span><span class="p">(</span><span class="o"><</span><span class="n">user_id</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and an empty JSON object.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="unlink-rich-menu-from-users" class="h3 h3">Unlink rich menus from multiple users</h3> | |
| <p>Unlinks rich menus from multiple users.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/richmenu/bulk/unlink</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Content-Type</td> | |
| <td style="word-break: normal">application/json</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="request-body" class="h4 h4">Request body</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userIds</td> | |
| <td style="word-break: normal">Array of strings</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Array of user IDs. Found in the <code>source</code> object of <a | |
| href="#webhook-event-objects">webhook event objects</a>. Do not use the LINE ID used in LINE. <br> | |
| Max: 150 user IDs</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-v</span> <span class="nt">-X</span> POST https://api.line.me/v2/bot/richmenu/bulk/unlink <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s2">"Authorization: Bearer {channel access token}"</span> <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span> | |
| <span class="nt">-d</span> <span class="s1">'{ | |
| "userIds":["{userId1}","{userId2}"] | |
| }'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">bulk_unlink_rich_menus</span><span class="p">([</span><span class="o"><</span><span class="n">userId1</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">userId2</span><span class="o">></span><span class="p">])</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="c">// No sample code available</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="c1">// No sample code available | |
| </span></code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="c"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>202</code> and an empty JSON object.</p> | |
| <p>Unlike <a href="#unlink-rich-menu-from-user">unlinking a rich menu from a user</a>, this request is | |
| processed asynchronously in the background. Normally, the process is completed within a few seconds.</p> | |
| <p>To verify whether the request was processed successfully, <a | |
| href="/en/reference/messaging-api/#get-rich-menu-id-of-user">get the rich menu ID linked to the users</a> | |
| and check if the unlinked rich menus are actually not linked to the users.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="account-link" class="h2 h2">Account link</h2> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="issue-link-token" class="h3 h3">Issue link token</h3> | |
| <p>Issues a link token used for the <a href="/en/docs/messaging-api/linking-accounts/">account link</a> | |
| feature.</p> | |
| <h4 id="http-request" class="h4 h4">HTTP request</h4> | |
| <p><code>POST https://api.line.me/v2/bot/user/{userId}/linkToken</code></p> | |
| <h4 id="request-headers" class="h4 h4">Request headers</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th style="word-break: normal">Request header</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">Authorization</td> | |
| <td style="word-break: normal">Bearer <code>{channel access token}</code> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="path-parameters" class="h4 h4">Path parameters</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Parameter</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">userId</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">User ID for the LINE account to be linked. Found in the | |
| <code>source</code> object of <a href="#account-link-event">account link event</a> objects. Do not use | |
| the LINE ID used in LINE.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example request</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight shell js-show" data-code="shell"><code>curl <span class="nt">-X</span> POST https://api.line.me/v2/bot/user/<span class="o">{</span>userId<span class="o">}</span>/linkToken <span class="se">\</span> | |
| <span class="nt">-H</span> <span class="s1">'Authorization: Bearer {channel access token}'</span> | |
| </code></pre> | |
| <pre class="highlight java" data-code="java"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight ruby" data-code="ruby"><code><span class="n">client</span> <span class="o">=</span> <span class="no">Line</span><span class="o">::</span><span class="no">Bot</span><span class="o">::</span><span class="no">Client</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_secret</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel secret>"</span><span class="p">]</span> | |
| <span class="n">config</span><span class="p">.</span><span class="nf">channel_token</span> <span class="o">=</span> <span class="no">ENV</span><span class="p">[</span><span class="s2">"<channel token>"</span><span class="p">]</span> | |
| <span class="p">}</span> | |
| <span class="n">client</span><span class="p">.</span><span class="nf">create_link_token</span><span class="p">(</span><span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight go" data-code="go"><code><span class="n">bot</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">linebot</span><span class="o">.</span><span class="n">New</span><span class="p">(</span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">secret</span><span class="o">></span><span class="p">,</span><span class="x"> </span><span class="o"><</span><span class="n">channel</span><span class="x"> </span><span class="n">token</span><span class="o">></span><span class="p">)</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="n">res</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">bot</span><span class="o">.</span><span class="n">IssueLinkToken</span><span class="p">(</span><span class="o"><</span><span class="n">userId</span><span class="o">></span><span class="p">)</span><span class="o">.</span><span class="n">Do</span><span class="p">()</span><span class="x"> | |
| </span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x"> | |
| </span><span class="o">...</span><span class="x"> | |
| </span><span class="p">}</span><span class="x"> | |
| </span><span class="nb">println</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">LinkToken</span><span class="p">)</span><span class="x"> | |
| </span></code></pre> | |
| <pre class="highlight php" data-code="php"><code><span class="nv">$httpClient</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot\HTTPClient\CurlHTTPClient</span><span class="p">(</span><span class="s1">'<channel access token>'</span><span class="p">);</span> | |
| <span class="nv">$bot</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\LINE\LINEBot</span><span class="p">(</span><span class="nv">$httpClient</span><span class="p">,</span> <span class="p">[</span><span class="s1">'channelSecret'</span> <span class="o">=></span> <span class="s1">'<channel secret>'</span><span class="p">]);</span> | |
| <span class="nv">$response</span> <span class="o">=</span> <span class="nv">$bot</span><span class="o">-></span><span class="na">createLinkToken</span><span class="p">(</span><span class="o"><</span><span class="nx">userId</span><span class="o">></span><span class="p">);</span> | |
| </code></pre> | |
| <pre class="highlight perl" data-code="perl"><code><span class="c1"># No sample code available</span> | |
| </code></pre> | |
| <pre class="highlight python" data-code="python"><code><span class="n">link_token_response</span> <span class="o">=</span> <span class="n">line_bot_api</span><span class="o">.</span><span class="n">issue_link_token</span><span class="p">(</span><span class="o"><</span><span class="n">user_id</span><span class="o">></span><span class="p">)</span> | |
| </code></pre> | |
| <pre class="highlight javascript" data-code="nodejs"><code><span class="c1">// No sample code available</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="response" class="h4 h4">Response</h4> | |
| <p>Returns the status code <code>200</code> and a link token. Link tokens are valid for 10 minutes and can | |
| only be used once.</p> | |
| <p>Note: The validity period may change without notice.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example response</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"linkToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="message-objects" class="h2 h2">Message objects</h2> | |
| <p>JSON object which contains the contents of the message you send.</p> | |
| <ul> | |
| <li> | |
| <a href="#message-common-properties">Common properties for messages</a> | |
| <ul> | |
| <li><a href="#quick-reply">Quick reply</a></li> | |
| </ul> | |
| </li> | |
| <li><a href="#text-message">Text message</a></li> | |
| <li><a href="#image-message">Image message</a></li> | |
| <li><a href="#video-message">Video message</a></li> | |
| <li><a href="#audio-message">Audio message</a></li> | |
| <li><a href="#location-message">Location message</a></li> | |
| <li><a href="#sticker-message">Sticker message</a></li> | |
| <li><a href="#imagemap-message">Imagemap message</a></li> | |
| <li><a href="#template-messages">Template messages</a></li> | |
| <li><a href="#flex-message">Flex Message</a></li> | |
| </ul> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="message-common-properties" class="h3 h3">Common properties for messages</h3> | |
| <p>The following properties can be specified in all the message objects.</p> | |
| <h4 id="quick-reply" class="h4 h4">Quick reply</h4> | |
| <p>These properties are used for the quick reply feature. Supported on LINE 8.11.0 and later for iOS and | |
| Android. For more information, see <a href="/en/docs/messaging-api/using-quick-reply/">Using quick | |
| replies</a>.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">quickReply</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal"><a href="#items-object">items object</a></td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>If the user receives multiple <a href="#message-objects">message objects</a>, the <code>quickReply</code> | |
| property of the last message object is displayed.</p> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="items-object" class="h5 h5">items object</h5> | |
| <p>This is a container that contains <a href="#quick-reply-button-object">quick reply buttons</a>.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">items</td> | |
| <td style="word-break: normal">Array of objects</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal"> | |
| <a href="#quick-reply-button-object">Quick reply button objects</a>. Max: 13 objects</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h5 id="quick-reply-button-object" class="h5 h5">Quick reply button object</h5> | |
| <p>This is a quick reply option that is displayed as a button.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>action</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">imageUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">URL of the icon that is displayed at the beginning of the button | |
| <ul> | |
| <li>Max: 1000 characters</li> | |
| <li>URL scheme: https</li> | |
| <li>Image format: PNG</li> | |
| <li>Aspect ratio: 1:1</li> | |
| <li>Data size: Up to 1 MB</li> | |
| </ul> | |
| There is no limit on the image size. <br> | |
| If the <code>action</code> property has a <a href="#camera-action">camera action</a>, <a | |
| href="#camera-roll-action">camera roll action</a>, or <a href="#location-action">location | |
| action</a>, and the <code>imageUrl</code> property is not set, the default icon is displayed.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">action</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Action performed when this button is tapped. Specify an <a | |
| href="#action-objects">action object</a>. The following is a list of the available actions: | |
| <ul> | |
| <li><a href="#postback-action">Postback action</a></li> | |
| <li><a href="#message-action">Message action</a></li> | |
| <li><a href="#datetime-picker-action">Datetime picker action</a></li> | |
| <li><a href="#camera-action">Camera action</a></li> | |
| <li><a href="#camera-roll-action">Camera roll action</a></li> | |
| <li><a href="#location-action">Location action</a></li> | |
| </ul> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>If a version of LINE that doesn't support the quick reply feature receives a message that contains quick | |
| reply buttons, only the message is displayed.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example items object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="s2">"quickReply"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"items"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"action"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"cameraRoll"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Send photo"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"action"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"camera"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Open camera"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="text-message" class="h3 h3">Text message</h3> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>text</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">text</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Message text. You can include the following emoji: | |
| <ul> | |
| <li>Unicode emoji</li> | |
| <li>LINE original emoji (<a href="/media/messaging-api/emoji-list.pdf">Unicode code point table for | |
| LINE original emoji</a>)</li> | |
| </ul> | |
| Max: 2000 characters</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Text message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Hello, world"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"><text></text></div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Text message example with emoji</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"</span><span class="se">\u</span><span class="s2">DBC0</span><span class="se">\u</span><span class="s2">DC84 LINE emoji"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="sticker-message" class="h3 h3">Sticker message</h3> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>sticker</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">packageId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Package ID for a set of stickers. For information on package IDs, see the | |
| <a href="/media/messaging-api/sticker_list.pdf">Sticker list</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">stickerId</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Sticker ID. For a list of sticker IDs for stickers that can be sent with | |
| the Messaging API, see the <a href="/media/messaging-api/sticker_list.pdf">Sticker list</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Sticker message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sticker"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"packageId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"stickerId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="image-message" class="h3 h3">Image message</h3> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>image</code></td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">originalContentUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Image URL (Max: 1000 characters)<br> | |
| <strong>HTTPS</strong><br> | |
| JPEG<br> | |
| Max: 4096 x 4096<br> | |
| Max: 1 MB</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">previewImageUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Preview image URL (Max: 1000 characters)<br> | |
| <strong>HTTPS</strong><br> | |
| JPEG<br> | |
| Max: 240 x 240<br> | |
| Max: 1 MB</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Image message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"image"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"originalContentUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/original.jpg"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"previewImageUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/preview.jpg"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="video-message" class="h3 h3">Video message</h3> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>video</code></td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">originalContentUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">URL of video file (Max: 1000 characters)<br> | |
| <strong>HTTPS</strong><br> | |
| mp4<br> | |
| Max: 1 minute<br> | |
| Max: 10 MB<br> | |
| <br> | |
| A very wide or tall video may be cropped when played in some environments.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">previewImageUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">URL of preview image (Max: 1000 characters)<br> | |
| <strong>HTTPS</strong><br> | |
| JPEG<br> | |
| Max: 240 x 240<br> | |
| Max: 1 MB</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Video message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"video"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"originalContentUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/original.mp4"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"previewImageUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/preview.jpg"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="audio-message" class="h3 h3">Audio message</h3> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>audio</code></td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">originalContentUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">URL of audio file (Max: 1000 characters)<br> | |
| <strong>HTTPS</strong><br> | |
| m4a<br> | |
| Max: 1 minute<br> | |
| Max: 10 MB</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">duration</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Length of audio file (milliseconds)</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Audio message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"audio"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"originalContentUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/original.m4a"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"duration"</span><span class="p">:</span><span class="w"> </span><span class="mi">60000</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="location-message" class="h3 h3">Location message</h3> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>location</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">title</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Title<br> | |
| Max: 100 characters</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">address</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Address<br> | |
| Max: 100 characters</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">latitude</td> | |
| <td class=" nowrap" style="word-break: normal">Decimal</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal">Latitude</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">longitude</td> | |
| <td class=" nowrap" style="word-break: normal">Decimal</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal">Longitude</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Location message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"location"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"my location"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"〒150-0002 東京都渋谷區渋谷2丁目21−1"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"latitude"</span><span class="p">:</span><span class="w"> </span><span class="mf">35.65910807942215</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"longitude"</span><span class="p">:</span><span class="w"> </span><span class="mf">139.70372892916203</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="imagemap-message" class="h3 h3">Imagemap message</h3> | |
| <p>Imagemap messages are messages configured with an image that has multiple tappable areas. You can assign | |
| one tappable area for the entire image or different tappable areas on divided areas of the image.</p> | |
| <p>You can also play a video on the image and display a label with a hyperlink after the video is finished. | |
| </p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>imagemap</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">baseUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Base URL of the image<br> | |
| Max: 1000 characters<br> | |
| <strong>HTTPS</strong><br> | |
| For more information about the specification of images supported by imagemap messages, see <a | |
| href="#base-url">How to configure an image</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">altText</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Alternative text<br> | |
| Max: 400 characters</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">baseSize.width</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Width of base image in pixels. Set to 1040.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">baseSize.height</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Height of base image. Set to the height that corresponds to a width of | |
| 1040 pixels.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">video.originalContentUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">*1</td> | |
| <td style="word-break: normal">URL of the video file (Max: 1000 characters)<br> | |
| <strong>HTTPS</strong><br> | |
| mp4<br> | |
| Max: 1 minute<br> | |
| Max: 10 MB<br> | |
| <br> | |
| Note: A very wide or tall video may be cropped when played in some environments.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">video.previewImageUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">*1</td> | |
| <td style="word-break: normal">URL of the preview image (Max: 1000 characters)<br> | |
| <strong>HTTPS</strong><br> | |
| JPEG<br> | |
| Max: 240 x 240 pixels<br> | |
| Max: 1 MB</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">video.area.x</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">*1</td> | |
| <td style="word-break: normal">Horizontal position of the video area relative to the left edge of the | |
| imagemap area. Value must be <code>0</code> or higher.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">video.area.y</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">*1</td> | |
| <td style="word-break: normal">Vertical position of the video area relative to the top of the imagemap | |
| area. Value must be <code>0</code> or higher.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">video.area.width</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">*1</td> | |
| <td style="word-break: normal">Width of the video area</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">video.area.height</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">*1</td> | |
| <td style="word-break: normal">Height of the video area</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">video.externalLink.linkUri</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">*2</td> | |
| <td style="word-break: normal">Webpage URL. Called when the label displayed after the video is | |
| tapped.<br> | |
| Max: 1000 characters<br> | |
| The available schemes are <code>http</code>, <code>https</code>, <code>line</code>, and | |
| <code>tel</code>. For more information about the LINE URL scheme, see <a | |
| href="/en/docs/messaging-api/using-line-url-scheme/">Using the LINE URL scheme</a>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">video.externalLink.label</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">*2</td> | |
| <td style="word-break: normal">Label. Displayed after the video is finished.<br> | |
| Max: 30 characters</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">actions</td> | |
| <td style="word-break: normal">Array of <a href="#imagemap-action-objects">imagemap action objects</a> | |
| </td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Action when tapped<br> | |
| Max: 50</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>*1 This property is required if you set a video to play on the imagemap.<br> | |
| *2 This property is required if you set a video to play and a label to display after the video on the | |
| imagemap.</p> | |
| <h4 id="base-url" class="h4 h4">How to configure an image</h4> | |
| <p>You can use images with the following specifications for imagemap messages.</p> | |
| <ul> | |
| <li>Image format: JPEG or PNG</li> | |
| <li>Image width: 240px, 300px, 460px, 700px, 1040px</li> | |
| <li>Size: Up to 1 MB</li> | |
| </ul> | |
| <p>Make it possible to access images of 5 different sizes using the <code>baseUrl/{image width}</code> URL | |
| format. LINE will then download an image at the appropriate resolution based on the device.</p> | |
| <p>For example, if we had a base URL of <code>https://example.com/images/cats</code>, the URL for the image | |
| with a width of 700px would be <code>https://example.com/images/cats/700</code>.</p> | |
| <p>Note: Access <code>https://example.com/images/cats/700</code> to confirm that the image is displayed.<br> | |
| Note: Do not include the extension in the image filename.</p> | |
| <h4 id="imagemap-action-objects" class="h4 h4">Imagemap action objects</h4> | |
| <p>Object which specifies the actions and tappable areas of an imagemap.</p> | |
| <p>When an area is tapped, the user is redirected to the URI specified in <code>uri</code> and the message | |
| specified in <code>message</code> is sent.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Imagemap message example with two tappable areas</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"imagemap"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"baseUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/bot/images/rm001"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"altText"</span><span class="p">:</span><span class="w"> </span><span class="s2">"This is an imagemap"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"baseSize"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">1040</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1040</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"video"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"originalContentUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/video.mp4"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"previewImageUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/video_preview.jpg"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"area"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">1040</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">585</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"externalLink"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"linkUri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/see_more.html"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"See More"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"actions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"uri"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"linkUri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"area"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="w"> </span><span class="mi">586</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">520</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">454</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Hello"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"area"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="w"> </span><span class="mi">520</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="w"> </span><span class="mi">586</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">520</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">454</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="imagemap-uri-action-object" class="h5 h5">Imagemap URI action object</h5> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>uri</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">label</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Label for the action. Spoken when the accessibility feature is enabled on | |
| the client device.<br> | |
| Max: 50 characters<br> | |
| Supported on LINE 8.2.0 and later for iOS.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">linkUri</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Webpage URL<br> | |
| Max: 1000 characters<br> | |
| The available schemes are <code>http</code>, <code>https</code>, <code>line</code>, and | |
| <code>tel</code>. For more information about the LINE URL scheme, see <a | |
| href="/en/docs/messaging-api/using-line-url-scheme/">Using the LINE URL scheme</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">area</td> | |
| <td style="word-break: normal"><a href="#imagemap-area-object">Imagemap area object</a></td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Defined tappable area</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example imagemap URI action object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"uri"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="s2">"https://example.com/"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"linkUri"</span><span class="p">:</span><span class="s2">"https://example.com/"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"area"</span><span class="p">:{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="mi">520</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="mi">1040</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="imagemap-message-action-object" class="h5 h5">Imagemap message action object</h5> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>message</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">label</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Label for the action. Spoken when the accessibility feature is enabled on | |
| the client device.<br> | |
| Max: 50 characters<br> | |
| Supported on LINE 8.2.0 and later for iOS.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">text</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Message to send<br> | |
| Max: 400 characters<br> | |
| Supported on LINE for iOS and Android only.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">area</td> | |
| <td style="word-break: normal"><a href="#imagemap-area-object">Imagemap area object</a></td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Defined tappable area</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example imagemap message action object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="s2">"hello"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="s2">"hello"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"area"</span><span class="p">:{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="mi">520</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="mi">520</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="mi">1040</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h6 id="imagemap-area-object" class=" h6">Imagemap area object</h6> | |
| <p>Defines the size of a tappable area. The top left is used as the origin of the area. Set these properties | |
| based on the <code>baseSize.width</code> property and the <code>baseSize.height</code> property.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">x</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Horizontal position relative to the left edge of the area. Value must be | |
| <code>0</code> or higher.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">y</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Vertical position relative to the top of the area. Value must be | |
| <code>0</code> or higher.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">width</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Width of the tappable area</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">height</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Height of the tappable area</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example imagemap area object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="mi">520</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="mi">520</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="mi">1040</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="template-messages" class="h3 h3">Template messages</h3> | |
| <div class="Md108FrameNote"> | |
| <p><span class="Md07TextBold">Note:</span> Template messages are only supported on LINE 6.7.0 and later for | |
| iOS and Android. | |
| </p> | |
| </div> | |
| <p>Template messages are messages with predefined layouts which you can customize. For more information, see | |
| <a href="/en/docs/messaging-api/message-types/#template-messages">template messages</a>.</p> | |
| <p>The following template types are available:</p> | |
| <ul> | |
| <li><a href="#buttons">Buttons</a></li> | |
| <li><a href="#confirm">Confirm</a></li> | |
| <li><a href="#carousel">Carousel</a></li> | |
| <li><a href="#image-carousel">Image carousel</a></li> | |
| </ul> | |
| <h4 id="common-properties-of-template-message-objects" class="h4 h4">Common properties of template message | |
| objects</h4> | |
| <p>The following properties are common to all template message objects.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>template</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">altText</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Alternative text.<br> | |
| Max: 400 characters</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">template</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">A <a href="#buttons">Buttons</a>, <a href="#confirm">Confirm</a>, <a | |
| href="#carousel">Carousel</a>, or <a href="#image-carousel">Image Carousel</a> object.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="buttons" class="h4 h4">Buttons template</h4> | |
| <p>Template with an image, title, text, and multiple action buttons.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>buttons</code></td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">thumbnailImageUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Image URL (Max: 1000 characters)<br> | |
| <strong>HTTPS</strong><br> | |
| JPEG or PNG<br> | |
| Max width: 1024px<br> | |
| Max: 1 MB</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">imageAspectRatio</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Aspect ratio of the image. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>rectangle</code>: 1.51:1</li> | |
| <li> | |
| <code>square</code>: 1:1</li> | |
| </ul> | |
| The default value is <code>rectangle</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">imageSize</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Size of the image. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>cover</code>: The image fills the entire image area. Parts of the image that do not fit in | |
| the area are not displayed.</li> | |
| <li> | |
| <code>contain</code>: The entire image is displayed in the image area. A background is displayed | |
| in the unused areas to the left and right of vertical images and in the areas above and below | |
| horizontal images.</li> | |
| </ul> | |
| The default value is <code>cover</code>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">imageBackgroundColor</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Background color of image. Specify a RGB color value. The default value | |
| is <code>#FFFFFF</code> (white).</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">title</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Title<br> | |
| Max: 40 characters</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">text</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Message text<br> | |
| Max: 160 characters (no image or title)<br> | |
| Max: 60 characters (message with an image or title)</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">defaultAction</td> | |
| <td style="word-break: normal"><a href="#action-objects">Action object</a></td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Action when image is tapped; set for the entire image, title, and text | |
| area</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">actions</td> | |
| <td style="word-break: normal">Array of <a href="#action-objects">action objects</a> | |
| </td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Action when tapped<br> | |
| Max: 4</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <aside class="warning"> | |
| Because of the height limitation for buttons template messages, the lower part of the <code>text</code> | |
| display area will get cut off if the height limitation is exceeded. For this reason, depending on the | |
| character width, the message text may not be fully displayed even when it is within the character limits. | |
| </aside> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Buttons template message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"template"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"altText"</span><span class="p">:</span><span class="w"> </span><span class="s2">"This is a buttons template"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"template"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"buttons"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"thumbnailImageUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/bot/images/image.jpg"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"imageAspectRatio"</span><span class="p">:</span><span class="w"> </span><span class="s2">"rectangle"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"imageSize"</span><span class="p">:</span><span class="w"> </span><span class="s2">"cover"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"imageBackgroundColor"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#FFFFFF"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Menu"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Please select"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"defaultAction"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"uri"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"View detail"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"uri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://example.com/page/123"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"actions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Buy"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=buy&itemid=123"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Add to cart"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=add&itemid=123"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"uri"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"View detail"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"uri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://example.com/page/123"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="confirm" class="h4 h4">Confirm template</h4> | |
| <p>Template with two action buttons.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>confirm</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">text</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Message text<br> | |
| Max: 240 characters</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">actions</td> | |
| <td style="word-break: normal">Array of <a href="#action-objects">action objects</a> | |
| </td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Action when tapped<br> | |
| Set 2 actions for the 2 buttons</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <aside class="warning"> | |
| Because of the height limitation for confirm template messages, the lower part of the <code>text</code> | |
| display area will get cut off if the height limitation is exceeded. For this reason, depending on the | |
| character width, the message text may not be fully displayed even when it is within the character limits. | |
| </aside> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Confirm template message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"template"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"altText"</span><span class="p">:</span><span class="w"> </span><span class="s2">"this is a confirm template"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"template"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"confirm"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Are you sure?"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"actions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Yes"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"yes"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"No"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"no"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="carousel" class="h4 h4">Carousel template</h4> | |
| <p>Template with multiple columns which can be cycled like a carousel. The columns will be shown in order by | |
| scrolling horizontally.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>carousel</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">columns</td> | |
| <td style="word-break: normal">Array of <a href="#column-object-for-carousel">column objects</a> | |
| </td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Array of columns<br> | |
| Max: 10</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">imageAspectRatio</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Aspect ratio of the image. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>rectangle</code>: 1.51:1</li> | |
| <li> | |
| <code>square</code>: 1:1</li> | |
| </ul> | |
| Applies to all columns. The default value is <code>rectangle</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">imageSize</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Size of the image. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>cover</code>: The image fills the entire image area. Parts of the image that do not fit in | |
| the area are not displayed.</li> | |
| <li> | |
| <code>contain</code>: The entire image is displayed in the image area. A background is displayed | |
| in the unused areas to the left and right of vertical images and in the areas above and below | |
| horizontal images.</li> | |
| </ul> | |
| Applies to all columns. The default value is <code>cover</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h5 id="column-object-for-carousel" class="h5 h5">Column object for carousel</h5> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">thumbnailImageUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Image URL (Max: 1000 characters)<br> | |
| <strong>HTTPS</strong><br> | |
| JPEG or PNG<br> | |
| Aspect ratio: 1:1.51<br> | |
| Max width: 1024px<br> | |
| Max: 1 MB</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">imageBackgroundColor</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Background color of image. Specify a RGB color value. The default value | |
| is <code>#FFFFFF</code> (white).</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">title</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Title<br> | |
| Max: 40 characters</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">text</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Message text<br> | |
| Max: 120 characters (no image or title)<br> | |
| Max: 60 characters (message with an image or title)</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">defaultAction</td> | |
| <td style="word-break: normal"><a href="#action-objects">Action object</a></td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Action when image is tapped; set for the entire image, title, and text | |
| area</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">actions</td> | |
| <td style="word-break: normal">Array of <a href="#action-objects">action objects</a> | |
| </td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Action when tapped<br> | |
| Max: 3</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <aside class="warning"> | |
| Because of the height limitation for carousel template messages, the lower part of the <code>text</code> | |
| display area will get cut off if the height limitation is exceeded. For this reason, depending on the | |
| character width, the message text may not be fully displayed even when it is within the character limits. | |
| </aside> | |
| <aside class="notice"> | |
| Keep the number of actions consistent for all columns. If you use an image or title for a column, make sure | |
| to do the same for all other columns. | |
| </aside> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Carousel template message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"template"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"altText"</span><span class="p">:</span><span class="w"> </span><span class="s2">"this is a carousel template"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"template"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"carousel"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"columns"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"thumbnailImageUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/bot/images/item1.jpg"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"imageBackgroundColor"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#FFFFFF"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"this is menu"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"description"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"defaultAction"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"uri"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"View detail"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"uri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://example.com/page/123"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"actions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Buy"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=buy&itemid=111"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Add to cart"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=add&itemid=111"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"uri"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"View detail"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"uri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://example.com/page/111"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"thumbnailImageUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/bot/images/item2.jpg"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"imageBackgroundColor"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#000000"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"this is menu"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"description"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"defaultAction"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"uri"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"View detail"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"uri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://example.com/page/222"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"actions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Buy"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=buy&itemid=222"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Add to cart"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=add&itemid=222"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"uri"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"View detail"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"uri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://example.com/page/222"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">],</span><span class="w"> | |
| </span><span class="s2">"imageAspectRatio"</span><span class="p">:</span><span class="w"> </span><span class="s2">"rectangle"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"imageSize"</span><span class="p">:</span><span class="w"> </span><span class="s2">"cover"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="image-carousel" class="h4 h4">Image carousel template</h4> | |
| <p>Template with multiple images which can be cycled like a carousel. The images will be shown in order by | |
| scrolling horizontally.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal"><code>image_carousel</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">columns</td> | |
| <td style="word-break: normal">Array of <a href="#column-object-for-image-carousel">column objects</a> | |
| </td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Array of columns<br> | |
| Max: 10</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h5 id="column-object-for-image-carousel" class="h5 h5">Column object for image carousel</h5> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">imageUrl</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Image URL (Max: 1000 characters)<br> | |
| <strong>HTTPS</strong><br> | |
| JPEG or PNG<br> | |
| Aspect ratio: 1:1<br> | |
| Max width: 1024px<br> | |
| Max: 1 MB</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">action</td> | |
| <td style="word-break: normal"><a href="#action-objects">Action object</a></td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Action when image is tapped</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Image carousel template message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"template"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"altText"</span><span class="p">:</span><span class="w"> </span><span class="s2">"this is a image carousel template"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"template"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"image_carousel"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"columns"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"imageUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/bot/images/item1.jpg"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"action"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Buy"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=buy&itemid=111"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"imageUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/bot/images/item2.jpg"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"action"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Yes"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"yes"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"imageUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/bot/images/item3.jpg"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"action"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"uri"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"View detail"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"uri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://example.com/page/222"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="flex-message" class="h3 h3">Flex Message</h3> | |
| <p>Flex Messages are messages with a customizable layout. You can customize the layout freely based on the | |
| specification for <a href="https://www.w3.org/TR/css-flexbox-1/" target="_blank">CSS Flexible Box (CSS | |
| Flexbox)</a>. For more information, see <a href="/en/docs/messaging-api/using-flex-messages/">Using Flex | |
| Messages</a> in the API documentation.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>flex</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">altText</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Alternative text<br> | |
| Max: 400 characters</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">contents</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Flex Message <a href="#container">container</a> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="container" class="h4 h4">Container</h4> | |
| <p>A container is the top-level structure of a Flex Message. Here are the types of containers available:</p> | |
| <ul> | |
| <li><a href="#bubble">Bubble</a></li> | |
| <li><a href="#f-carousel">Carousel</a></li> | |
| </ul> | |
| <p>For JSON samples and usage of containers, see <a href="/en/docs/messaging-api/flex-message-elements/">Flex | |
| Message elements</a> in the API documentation.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Flex Message example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"flex"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"altText"</span><span class="p">:</span><span class="w"> </span><span class="s2">"this is a flex message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contents"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bubble"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"body"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"box"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"layout"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vertical"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contents"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"hello"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"world"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="bubble" class="h5 h5">Bubble</h5> | |
| <p>This is a container that contains one message bubble. It can contain four blocks: header, hero, body, and | |
| footer. For more information about using each block, see <a | |
| href="/en/docs/messaging-api/flex-message-elements/#block">Block</a> in the API documentation.</p> | |
| <p>The maximum size of JSON data that defines a bubble is 10 KB.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>bubble</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">size</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The size of the bubble. You can specify one of the following values: | |
| <code>nano</code>, <code>micro</code>, <code>kilo</code>, <code>mega</code>, or <code>giga</code>. The | |
| default value is <code>mega</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">direction</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Text directionality and the direction of placement of components in | |
| horizontal boxes. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>ltr</code>: The text is left-to-right horizontal writing, and the components are placed from | |
| left to right</li> | |
| <li> | |
| <code>rtl</code>: The text is right-to-left horizontal writing, and the components are placed from | |
| right to left</li> | |
| </ul> | |
| The default value is <code>ltr</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">header</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Header block. Specify a <a href="#box">Box</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">hero</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Hero block. Specify a <a href="#box">box</a> or an <a | |
| href="#f-image">image</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">body</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Body block. Specify a <a href="#box">Box</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">footer</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Footer block. Specify a <a href="#box">Box</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">styles</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Style of each block. Specify a <a href="#bubble-style">bubble style</a>. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">action</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Action performed when this image is tapped. Specify an <a | |
| href="#action-objects">action object</a>. This property is supported on the following versions of | |
| LINE. | |
| <ul> | |
| <li>LINE for iOS and Android: 8.11.0 and later</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Bubble example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bubble"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"header"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"box"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"layout"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vertical"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contents"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Header text"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"hero"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"image"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/flex/images/image.jpg"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"body"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"box"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"layout"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vertical"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contents"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Body text"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"footer"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"box"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"layout"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vertical"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contents"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Footer text"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"styles"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"comment"</span><span class="p">:</span><span class="w"> </span><span class="s2">"See the example of a bubble style object"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="style-setting-objects" class="h5 h5">Objects for the block style</h5> | |
| <p>Use the following two objects to define the style of blocks in a bubble.</p> | |
| <h6 id="bubble-style" class=" h6">Bubble style</h6> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">header</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Header block. Specify a <a href="#block-style">block style</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">hero</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Hero block. Specify a <a href="#block-style">block style</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">body</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Body block. Specify a <a href="#block-style">block style</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">footer</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Footer block. Specify a <a href="#block-style">block style</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h6 id="block-style" class=" h6">Block style</h6> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">backgroundColor</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Background color of the block. Use a hexadecimal color code.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">separator</td> | |
| <td class=" nowrap" style="word-break: normal">Boolean</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal"> | |
| <code>true</code> to place a separator above the block. The default value is <code>false</code>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">separatorColor</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Color of the separator. Use a hexadecimal color code.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <div class="annotation is-note"> | |
| <div class="annotation-header"> | |
| <i class="global-icon global-icon_note">note</i> | |
| Note | |
| </div> | |
| <div class="annotation-body"> | |
| <p>You cannot place a separator above the first block.</p> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example of a bubble style and block style</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="w"> </span><span class="s2">"styles"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"header"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"backgroundColor"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#00ffff"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"hero"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"separator"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"separatorColor"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#000000"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"footer"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"backgroundColor"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#00ffff"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"separator"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"separatorColor"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#000000"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="f-carousel" class="h5 h5">Carousel</h5> | |
| <p>A carousel is a container that contains multiple bubbles as child elements. Users can scroll horizontally | |
| through the bubbles.</p> | |
| <p>The maximum size of JSON data that defines a carousel is 50 KB.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>carousel</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">contents</td> | |
| <td style="word-break: normal">Array of objects</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal"> | |
| <a href="#bubble">Bubbles</a> in the carousel. Max: 10 bubbles</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <div class="annotation is-note"> | |
| <div class="annotation-header"> | |
| <i class="global-icon global-icon_note">note</i> | |
| Bubble width | |
| </div> | |
| <div class="annotation-body"> | |
| <p>A carousel cannot contain bubbles of different widths (<code>size</code> property). Each bubble in a | |
| carousel should have the same width.</p> | |
| </div> | |
| </div> | |
| <div class="annotation is-tip"> | |
| <div class="annotation-header"> | |
| <i class="global-icon global-icon_tip">tip</i> | |
| Bubble height | |
| </div> | |
| <div class="annotation-body"> | |
| <p>The body of each bubble will stretch to match the bubble with the greatest height in the carousel. | |
| However, bubbles with no body will not change height.</p> | |
| </div> | |
| </div> | |
| <h4 id="component" class="h4 h4">Component</h4> | |
| <p>Components are elements that make up a block. Here are the types of components available:</p> | |
| <ul> | |
| <li><a href="#box">Box</a></li> | |
| <li><a href="#button">Button</a></li> | |
| <li><a href="#f-image">Image</a></li> | |
| <li><a href="#icon">Icon</a></li> | |
| <li><a href="#f-text">Text</a></li> | |
| <li><a href="#span">Span</a></li> | |
| <li><a href="#separator">Separator</a></li> | |
| <li><a href="#filler">Filler</a></li> | |
| <li><a href="#spacer">Spacer (not recommended)</a></li> | |
| </ul> | |
| <p>For JSON samples and usage of each component, see <a | |
| href="/en/docs/messaging-api/flex-message-elements/">Flex Message elements</a> and <a | |
| href="/en/docs/messaging-api/flex-message-layout/">Flex Message layout</a> in the API documentation.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Carousel example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"carousel"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contents"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bubble"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"body"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"box"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"layout"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vertical"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contents"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"First bubble"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bubble"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"body"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"box"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"layout"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vertical"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contents"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Second bubble"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="box" class="h5 h5">Box</h5> | |
| <p>This is a component that defines the layout of child components. You can also include a box in a box.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>box</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">layout</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">The layout style of components in this box. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#box-layout-types">Direction of placing | |
| components</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">contents</td> | |
| <td style="word-break: normal">Array of objects</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Components in this box. Here are the types of components available: | |
| <ul> | |
| <li>When the <code>layout</code> property is <code>horizontal</code> or <code>vertical</code>: <a | |
| href="#box">box</a>, <a href="#button">button</a>, <a href="#f-image">image</a>, <a | |
| href="#f-text">text</a>, <a href="#separator">separator</a>, <a href="#filler">filler</a>, and | |
| <a href="#spacer">spacer (not recommended)</a> | |
| </li> | |
| <li>When the <code>layout</code> property is <code>baseline</code>: <a href="#icon">icon</a>, <a | |
| href="#f-text">text</a>, <a href="#filler">filler</a>, and <a href="#spacer">spacer (not | |
| recommended)</a> | |
| </li> | |
| </ul> | |
| Components are rendered in the order specified in the array.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">backgroundColor</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Background color of the block. In addition to the RGB color, an alpha | |
| channel (transparency) can also be set. Use a hexadecimal color code. (Example:#RRGGBBAA) The default | |
| value is <code>#00000000</code>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">borderColor</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Color of box border. Use a hexadecimal color code.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">borderWidth</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Width of box border. You can specify a value in pixels or any one of | |
| <code>none</code>, <code>light</code>, <code>normal</code>, <code>medium</code>, | |
| <code>semi-bold</code>, or <code>bold</code>. <code>none</code> does not render a border while the | |
| others become wider in the order of listing.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">cornerRadius</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Radius at the time of rounding the corners of the border. You can specify | |
| a value in pixels or any one of <code>none</code>, <code>xs</code>, <code>sm</code>, <code>md</code>, | |
| <code>lg</code>, <code>xl</code>, or <code>xxl</code>. <code>none</code> does not round the corner | |
| while the others increase in radius in the order of listing. The default value is <code>none</code>. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">width</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Width of the box. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#box-width">Width of a box</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">height</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Height of the box. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#box-height">Height of a box</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">flex</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The ratio of the width or height of this component within the parent box. | |
| For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-width-and-height">Width and height of | |
| components</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">spacing</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Minimum space between components in this box. The default value is | |
| <code>none</code>. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#spacing-property"><code>spacing</code> property of | |
| the box</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">margin</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Minimum space between this component and the previous component in the | |
| parent element. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#margin-property"><code>margin</code> property of | |
| the component</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">paddingAll</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Free space between the borders of this box and the child element. For | |
| more information, see <a href="/en/docs/messaging-api/flex-message-layout/#padding-property">Box | |
| padding</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">paddingTop</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Free space between the border at the upper end of this box and the upper | |
| end of the child element. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#padding-property">Box padding</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">paddingBottom</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Free space between the border at the lower end of this box and the lower | |
| end of the child element. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#padding-property">Box padding</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">paddingStart</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Free space between the border at the left end of this box and the left | |
| end of the child element. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#padding-property">Box padding</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">paddingEnd</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Free space between the border at the right end of this box and the right | |
| end of the child element. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#padding-property">Box padding</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">position</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Reference position for placing this box. Specify one of the following | |
| values: | |
| <ul> | |
| <li> | |
| <code>relative</code>: Use the previous box as reference.</li> | |
| <li> | |
| <code>absolute</code>: Use the top left of parent element as reference.</li> | |
| </ul> | |
| The default value is <code>relative</code>. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">offsetTop</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The top offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">offsetBottom</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The bottom offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">offsetStart</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The left offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">offsetEnd</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The right offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">action</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Action performed when this image is tapped. Specify an <a | |
| href="#action-objects">action object</a>. This property is supported on the following versions of | |
| LINE. | |
| <ul> | |
| <li>LINE for iOS and Android: 8.11.0 and later</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Box example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"box"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"layout"</span><span class="p">:</span><span class="w"> </span><span class="s2">"vertical"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"contents"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"image"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/flex/images/image.jpg"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"separator"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Text in the box"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="button" class="h5 h5">Button</h5> | |
| <p>This component renders a button. When the user taps a button, a specified action is performed.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>button</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">action</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Action performed when this button is tapped. Specify an <a | |
| href="#action-objects">action object</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">flex</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The ratio of the width or height of this component within the parent box. | |
| For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-width-and-height">Width and height of | |
| components</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">margin</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Minimum space between this component and the previous component in the | |
| parent element. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#margin-property"><code>margin</code> property of | |
| the component</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">position</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Reference for <code>offsetTop</code>, <code>offsetBottom</code>, | |
| <code>offsetStart</code>, and <code>offsetEnd</code>. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>relative</code>: Use the previous box as reference.</li> | |
| <li> | |
| <code>absolute</code>: Use the top left of parent element as reference.</li> | |
| </ul> | |
| The default value is <code>relative</code>. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">offsetTop</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The top offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">offsetBottom</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The bottom offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">offsetStart</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The left offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">offsetEnd</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The right offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">height</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Height of the button. You can specify <code>sm</code> or <code>md</code>. | |
| The default value is <code>md</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">style</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Style of the button. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>primary</code>: Style for dark color buttons</li> | |
| <li> | |
| <code>secondary</code>: Style for light color buttons</li> | |
| <li> | |
| <code>link</code>: HTML link style</li> | |
| </ul> | |
| The default value is <code>link</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">color</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Character color when the <code>style</code> property is | |
| <code>link</code>. Background color when the <code>style</code> property is <code>primary</code> or | |
| <code>secondary</code>. Use a hexadecimal color code.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">gravity</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Alignment style in vertical direction. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#gravity-property">Alignment in vertical | |
| direction</a> in the API documentation.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Button example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"button"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"action"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"uri"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Tap me"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"uri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com"</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"style"</span><span class="p">:</span><span class="w"> </span><span class="s2">"primary"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"color"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#0000ff"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="f-image" class="h5 h5">Image</h5> | |
| <p>This component renders an image.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>image</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">url</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Image URL<br> | |
| Protocol: HTTPS<br> | |
| Image format: JPEG or PNG<br> | |
| Maximum image size: 1024×1024 pixels<br> | |
| Maximum data size: 1 MB</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">flex</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The ratio of the width or height of this component within the parent box. | |
| For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-width-and-height">Width and height of | |
| components</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">margin</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Minimum space between this component and the previous component in the | |
| parent element. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#margin-property"><code>margin</code> property of | |
| the component</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">position</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Reference for <code>offsetTop</code>, <code>offsetBottom</code>, | |
| <code>offsetStart</code>, and <code>offsetEnd</code>. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>relative</code>: Use the previous box as reference.</li> | |
| <li> | |
| <code>absolute</code>: Use the top left of parent element as reference.</li> | |
| </ul> | |
| The default value is <code>relative</code>. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">offsetTop</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The top offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">offsetBottom</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The bottom offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">offsetStart</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The left offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">offsetEnd</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The right offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">align</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Alignment style in horizontal direction. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#align-property">Alignment in horizontal | |
| direction</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">gravity</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Alignment style in vertical direction. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#gravity-property">Alignment in vertical | |
| direction</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">size</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Maximum size of the image width. You can specify one of the following | |
| values: <code>xxs</code>, <code>xs</code>, <code>sm</code>, <code>md</code>, <code>lg</code>, | |
| <code>xl</code>, <code>xxl</code>, <code>3xl</code>, <code>4xl</code>, <code>5xl</code>, or | |
| <code>full</code>. The size increases in the order of listing. The default value is <code>md</code>. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">aspectRatio</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Aspect ratio of the image. <code>{width}:{height}</code> format. Specify | |
| the value of <code>{width}</code> and <code>{height}</code> in the range from 1 to 100000. However, | |
| you cannot set <code>{height}</code> to a value that is more than three times the value of | |
| <code>{width}</code>. The default value is <code>1:1</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">aspectMode</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The display style of the image if the aspect ratio of the image and that | |
| specified by the <code>aspectRatio</code> property do not match. For more information, see <a | |
| href="#drawing-area">About the drawing area</a>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">backgroundColor</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Background color of the image. Use a hexadecimal color code.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">action</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Action performed when this image is tapped. Specify an <a | |
| href="#action-objects">action object</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h6 id="drawing-area" class=" h6">About the drawing area</h6> | |
| <p>Specify the max width of the image with the <code>size</code> property and the aspect ratio | |
| (horizontal-to-vertical ratio) of the image with the <code>aspectRatio</code> property. The rectangular area | |
| determined by the <code>size</code> and <code>aspectRatio</code> properties is called the <strong>drawing | |
| area</strong>. The image is rendered in this drawing area.</p> | |
| <p>If the image width specified by the <code>flex</code> property is larger than that calculated from the <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-width-and-height"><code>size</code> | |
| property</a>, the width of the drawing area is scaled down to the width of the component. | |
| If the aspect ratio of the image and that specified by the <code>aspectRatio</code> property do not match, | |
| the image is displayed according to the <code>aspectMode</code> property. The default value is | |
| <code>fit</code>. | |
| - If the value of <code>aspectMode</code> is <code>cover</code>: The image fills the entire drawing area. | |
| Parts of the image that do not fit in the drawing area are not displayed. | |
| - If the value of <code>aspectMode</code> is <code>fit</code>: The entire image is displayed in the drawing | |
| area. The background is displayed in the unused areas to the left and right of vertical images and in the | |
| areas above and below horizontal images.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Image example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"image"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/flex/images/image.jpg"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"size"</span><span class="p">:</span><span class="w"> </span><span class="s2">"full"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"aspectRatio"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1.91:1"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="icon" class="h5 h5">Icon</h5> | |
| <p>This component renders an icon for decorating the adjacent text.</p> | |
| <p>This component can be used only in a <a | |
| href="/en/docs/messaging-api/flex-message-layout/#baseline-box">baseline box</a>.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>icon</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">url</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Image URL<br> | |
| Protocol: HTTPS<br> | |
| Image format: JPEG or PNG<br> | |
| Maximum image size: 1024×1024 pixels<br> | |
| Maximum data size: 1 MB</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">margin</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Minimum space between this component and the previous component in the | |
| parent element. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#margin-property"><code>margin</code> property of | |
| the component</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">position</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Reference for <code>offsetTop</code>, <code>offsetBottom</code>, | |
| <code>offsetStart</code>, and <code>offsetEnd</code>. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>relative</code>: Use the previous box as reference.</li> | |
| <li> | |
| <code>absolute</code>: Use the top left of parent element as reference.</li> | |
| </ul> | |
| The default value is <code>relative</code>. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">offsetTop</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The top offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">offsetBottom</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The bottom offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">offsetStart</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The left offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">offsetEnd</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The right offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">size</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Maximum size of the icon width. You can specify one of the following | |
| values: <code>xxs</code>, <code>xs</code>, <code>sm</code>, <code>md</code>, <code>lg</code>, | |
| <code>xl</code>, <code>xxl</code>, <code>3xl</code>, <code>4xl</code>, or <code>5xl</code>. The size | |
| increases in the order of listing. The default value is <code>md</code>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">aspectRatio</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Aspect ratio of the icon. <code>{width}:{height}</code> format. The | |
| values of <code>{width}</code> and <code>{height}</code> must be in the range 1–100000. | |
| <code>{height}</code> can't be more than three times the value of <code>{width}</code>. The default | |
| value is <code>1:1</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>The icon's <code>flex</code> property is fixed to <code>0</code>.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Icon example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"icon"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/icon/png/caution.png"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"size"</span><span class="p">:</span><span class="w"> </span><span class="s2">"lg"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"aspectRatio"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1.91:1"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="f-text" class="h5 h5">Text</h5> | |
| <p>This component renders a text string in one row. You can specify font color, size, and weight.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>text</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">text</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Text Be sure to set either one of the <code>text</code> property or | |
| <code>contents</code> property. If you set the <code>contents</code> property, <code>text</code> is | |
| ignored.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">contents</td> | |
| <td style="word-break: normal">Array of objects</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Array of <a href="#span">spans</a>. Be sure to set either one of the | |
| <code>text</code> property or <code>contents</code> property. If you set the <code>contents</code> | |
| property, <code>text</code> is ignored.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">flex</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The ratio of the width or height of this component within the parent box. | |
| For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-width-and-height">Width and height of | |
| components</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">margin</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Minimum space between this component and the previous component in the | |
| parent element. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#margin-property"><code>margin</code> property of | |
| the component</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">position</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Reference for <code>offsetTop</code>, <code>offsetBottom</code>, | |
| <code>offsetStart</code>, and <code>offsetEnd</code>. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>relative</code>: Use the previous box as reference.</li> | |
| <li> | |
| <code>absolute</code>: Use the top left of parent element as reference.</li> | |
| </ul> | |
| The default value is <code>relative</code>. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">offsetTop</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The top offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">offsetBottom</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The bottom offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">offsetStart</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The left offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">offsetEnd</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The right offset. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-offset">Offset</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">size</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Font size. You can specify one of the following values: <code>xxs</code>, | |
| <code>xs</code>, <code>sm</code>, <code>md</code>, <code>lg</code>, <code>xl</code>, <code>xxl</code>, | |
| <code>3xl</code>, <code>4xl</code>, or <code>5xl</code>. The size increases in the order of listing. | |
| The default value is <code>md</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">align</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Alignment style in horizontal direction. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#align-property">Alignment in horizontal | |
| direction</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">gravity</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Alignment style in vertical direction. The default value is | |
| <code>top</code>. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#gravity-property">Alignment in vertical | |
| direction</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">wrap</td> | |
| <td class=" nowrap" style="word-break: normal">Boolean</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal"> | |
| <code>true</code> to wrap text. The default value is <code>false</code>. If set to <code>true</code>, | |
| you can use a new line character (<code>\n</code>) to begin on a new line. For more information, see | |
| <a href="/en/docs/messaging-api/flex-message-elements/#text-wrap">Wrapping text</a> in the API | |
| documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">maxLines</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Max number of lines. If the text does not fit in the specified number of | |
| lines, an ellipsis (…) is displayed at the end of the last line. If set to <code>0</code>, all the | |
| text is displayed. The default value is <code>0</code>. This property is supported on the following | |
| versions of LINE. | |
| <ul> | |
| <li>LINE for iOS and Android: 8.11.0 and later</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">weight</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Font weight. You can specify one of the following values: | |
| <code>regular</code> or <code>bold</code>. Specifying <code>bold</code> makes the font bold. The | |
| default value is <code>regular</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">color</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Font color. Use a hexadecimal color code.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">action</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Action performed when this image is tapped. Specify an <a | |
| href="#action-objects">action object</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">style</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Style of the text. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>normal</code>: Normal</li> | |
| <li> | |
| <code>italic</code>: Italic</li> | |
| </ul> | |
| The default value is <code>normal</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">decoration</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Decoration of the text. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>none</code>: No decoration</li> | |
| <li> | |
| <code>underline</code>: Underline</li> | |
| <li> | |
| <code>line-through</code>: Strikethrough</li> | |
| </ul> | |
| The default value is <code>none</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Text example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Hello, World!"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"size"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xl"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"weight"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bold"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"color"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#0000ff"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="span" class="h5 h5">Span</h5> | |
| <p>This component renders multiple text strings with different designs in one row. You can specify the color, | |
| size, weight, and decoration for the font. Span is set to <code>contents</code> property in <a | |
| href="#f-text">Text</a>.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>span</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">text</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Text. If the <code>wrap</code> property of the parent text is set to | |
| <code>true</code>, you can use a new line character (<code>\n</code>) to begin on a new line.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">color</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Font color. Use a hexadecimal color code.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">size</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Font size. You can specify one of the following values: <code>xxs</code>, | |
| <code>xs</code>, <code>sm</code>, <code>md</code>, <code>lg</code>, <code>xl</code>, <code>xxl</code>, | |
| <code>3xl</code>, <code>4xl</code>, or <code>5xl</code>. The size increases in the order of listing. | |
| The default value is <code>md</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">weight</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Font weight. You can specify one of the following values: | |
| <code>regular</code> or <code>bold</code>. Specifying <code>bold</code> makes the font bold. The | |
| default value is <code>regular</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">style</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Style of the text. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>normal</code>: Normal</li> | |
| <li> | |
| <code>italic</code>: Italic</li> | |
| </ul> | |
| The default value is <code>normal</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">decoration</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Decoration of the text. Specify one of the following values: | |
| <ul> | |
| <li> | |
| <code>none</code>: No decoration</li> | |
| <li> | |
| <code>underline</code>: Underline</li> | |
| <li> | |
| <code>line-through</code>: Strikethrough</li> | |
| </ul> | |
| The default value is <code>none</code>. <br> | |
| Note: The decoration set in the <code>decoration</code> property of the <a href="#f-text">text</a> | |
| cannot be overwritten by the <code>decoration</code> property of the span.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Span example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"span"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"蛙"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"size"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xxl"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"weight"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bold"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"style"</span><span class="p">:</span><span class="w"> </span><span class="s2">"italic"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"color"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#4f8f00"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="separator" class="h5 h5">Separator</h5> | |
| <p>This component renders a separating line within a box. A vertical line will be rendered in a horizontal box | |
| and a horizontal line will be rendered in a vertical box.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>separator</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">margin</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Minimum space between this component and the previous component in the | |
| parent element. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#margin-property"><code>margin</code> property of | |
| the component</a> in the API documentation.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">color</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Color of the separator. Use a hexadecimal color code.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Separator example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"separator"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"color"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#000000"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="filler" class="h5 h5">Filler</h5> | |
| <p>This component is used to create a space. You can put a space between, before, or after components by | |
| inserting a filler anywhere within a box.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>filler</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">flex</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">The ratio of the width or height of this component within the parent box. | |
| For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#component-width-and-height">Width and height of | |
| components</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>The <code>spacing</code> property of the parent element will be ignored for fillers.</p> | |
| <h5 id="spacer" class="h5 h5">Spacer (not recommended)</h5> | |
| <div class="annotation is-note"> | |
| <div class="annotation-header"> | |
| <i class="global-icon global-icon_note">note</i> | |
| Note | |
| </div> | |
| <div class="annotation-body"> | |
| <p>The spacer will be removed in a future release. We recommend setting the padding of the box without | |
| using a spacer. For more information, see <a | |
| href="/en/docs/messaging-api/flex-message-layout/#padding-property">Box padding</a> in the API | |
| documentation.</p> | |
| </div> | |
| </div> | |
| <p>This is an invisible component that places a fixed-size space at the beginning or end of the box.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>spacer</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">size</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Size of the space. You can specify one of the following values: | |
| <code>xs</code>, <code>sm</code>, <code>md</code>, <code>lg</code>, <code>xl</code>, or | |
| <code>xxl</code>. The size increases in the order of listing. The default value is <code>md</code>. | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p>The <code>spacing</code> property of the parent element will be ignored for spacers.</p> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Spacer example</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"spacer"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"size"</span><span class="p">:</span><span class="w"> </span><span class="s2">"md"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| <p class="SectionReference_CodeTitle"> Filler example</p> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"filler"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="action-objects" class="h2 h2">Action objects</h2> | |
| <p>These are types of actions for your bot to take when a user taps a button or an image in a message. </p> | |
| <ul> | |
| <li><a href="#postback-action">Postback action</a></li> | |
| <li><a href="#message-action">Message action</a></li> | |
| <li><a href="#uri-action">URI action</a></li> | |
| <li><a href="#datetime-picker-action">Datetime picker action</a></li> | |
| <li><a href="#camera-action">Camera action</a></li> | |
| <li><a href="#camera-roll-action">Camera roll action</a></li> | |
| <li><a href="#location-action">Location action</a></li> | |
| </ul> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="postback-action" class="h3 h3">Postback action</h3> | |
| <p>When a control associated with this action is tapped, a <a href="#postback-event">postback event</a> is | |
| returned via webhook with the specified string in the <code>data</code> property.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>postback</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">label</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">See description</td> | |
| <td style="word-break: normal">Label for the action<br> | |
| <ul> | |
| <li>Required for templates other than image carousel. Max: 20 characters.</li> | |
| <li>Optional for image carousel templates. Max: 12 characters.</li> | |
| <li>Optional for rich menus. Spoken when the accessibility feature is enabled on the client device. | |
| Max: 20 characters. Supported on LINE 8.2.0 and later for iOS.</li> | |
| <li>Required for quick reply buttons. Max: 20 characters. Supported on LINE 8.11.0 and later for iOS | |
| and Android.</li> | |
| <li>Required for the button of Flex Message. This property can be specified for the box, image, and | |
| text but its value is not displayed. Max: 20 characters.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">data</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">String returned via webhook in the <code>postback.data</code> property of | |
| the <a href="#postback-event">postback event</a><br> | |
| Max: 300 characters</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">displayText</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">See description</td> | |
| <td style="word-break: normal">Text displayed in the chat as a message sent by the user when the action | |
| is performed. Required for quick reply buttons. Optional for the other message types.<br> | |
| Max: 300 characters<br> | |
| The <code>displayText</code> and <code>text</code> properties cannot both be used at the same time. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">text</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">【Deprecated】 Text displayed in the chat as a message sent by the user | |
| when the action is performed. Returned from the server through a webhook. This property shouldn't be | |
| used with quick reply buttons.<br> | |
| Max: 300 characters<br> | |
| The <code>displayText</code> and <code>text</code> properties cannot both be used at the same time. | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example postback action object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="s2">"Buy"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="s2">"action=buy&itemid=111"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="s2">"Buy"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="message-action" class="h3 h3">Message action</h3> | |
| <p>When a control associated with this action is tapped, the string in the <code>text</code> property is sent | |
| as a message from the user.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>message</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">label</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">See description</td> | |
| <td style="word-break: normal">Label for the action<br> | |
| <ul> | |
| <li>Required for templates other than image carousel. Max: 20 characters.</li> | |
| <li>Optional for image carousel templates. Max: 12 characters.</li> | |
| <li>Optional for rich menus. Spoken when the accessibility feature is enabled on the client device. | |
| Max: 20 characters. Supported on LINE 8.2.0 and later for iOS.</li> | |
| <li>Required for quick reply buttons. Max: 20 characters. Supported on LINE 8.11.0 and later for iOS | |
| and Android.</li> | |
| <li>Required for the button of Flex Message. This property can be specified for the box, image, and | |
| text but its value is not displayed. Max: 20 characters.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">text</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Text sent when the action is performed<br> | |
| Max: 300 characters</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example message action object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"message"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="s2">"Yes"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"text"</span><span class="p">:</span><span class="s2">"Yes"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="uri-action" class="h3 h3">URI action</h3> | |
| <p>When a control associated with this action is tapped, the URI specified in the <code>uri</code> property is | |
| opened.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>uri</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">label</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">See description</td> | |
| <td style="word-break: normal">Label for the action<br> | |
| <ul> | |
| <li>Required for templates other than image carousel. Max: 20 characters.</li> | |
| <li>Optional for image carousel templates. Max: 12 characters.</li> | |
| <li>Optional for rich menus. Spoken when the accessibility feature is enabled on the client device. | |
| Max: 20 characters. Supported on LINE 8.2.0 and later for iOS.</li> | |
| <li>Required for the button of Flex Message. This property can be specified for the box, image, and | |
| text but its value is not displayed. Max: 20 characters.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">uri</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">URI opened when the action is performed (Max: 1000 characters)<br> | |
| The available schemes are <code>http</code>, <code>https</code>, <code>line</code>, and | |
| <code>tel</code>. For more information about the LINE URL scheme, see <a | |
| href="/en/docs/messaging-api/using-line-url-scheme/">Using the LINE URL scheme</a>.</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">altUri.desktop</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">URI opened on LINE for macOS and Windows when the action is performed | |
| (Max: 1000 characters)<br> | |
| If the <code>altUri.desktop</code> property is set, the <code>uri</code> property is ignored on LINE | |
| for macOS and Windows.<br> | |
| The available schemes are <code>http</code>, <code>https</code>, <code>line</code>, and | |
| <code>tel</code>. For more information about the LINE URL scheme, see <a | |
| href="/en/docs/messaging-api/using-line-url-scheme/">Using the LINE URL scheme</a>. This property is | |
| supported on the following version of LINE. | |
| <ul> | |
| <li>LINE 5.12.0 or later for macOS and Windows</li> | |
| </ul> | |
| Note: The <code>altUri.desktop</code> property is supported only when you set URI actions in Flex | |
| Messages.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example URI action object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"uri"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="s2">"View details"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"uri"</span><span class="p">:</span><span class="s2">"http://example.com/page/222"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"altUri"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"desktop"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"http://example.com/pc/page/222"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="datetime-picker-action" class="h3 h3">Datetime picker action</h3> | |
| <div class="annotation is-note"> | |
| <div class="annotation-header"> | |
| <i class="global-icon global-icon_note">note</i> | |
| Note | |
| </div> | |
| <div class="annotation-body"> | |
| <p>The datetime picker action is only supported on versions equal to or later than LINE 7.9.0 for iOS and | |
| LINE 7.12.0 for Android.</p> | |
| </div> | |
| </div> | |
| <p>When a control associated with this action is tapped, a <a href="#postback-event">postback event</a> is | |
| returned via webhook with the date and time selected by the user from the date and time selection dialog. | |
| The datetime picker action does not support time zones.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal"><code>datetimepicker</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">label</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">See description</td> | |
| <td style="word-break: normal">Label for the action<br> | |
| <ul> | |
| <li>Required for templates other than image carousel. Max: 20 characters.</li> | |
| <li>Optional for image carousel templates. Max: 12 characters.</li> | |
| <li>Optional for rich menus. Spoken when the accessibility feature is enabled on the client device. | |
| Max: 20 characters. Supported on LINE 8.2.0 and later for iOS.</li> | |
| <li>Required for quick reply buttons. Max: 20 characters. Supported on LINE 8.11.0 and later for iOS | |
| and Android.</li> | |
| <li>Required for the button of Flex Message. This property can be specified for the box, image, and | |
| text but its value is not displayed. Max: 20 characters.</li> | |
| </ul> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">data</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">String returned via webhook in the <code>postback.data</code> property of | |
| the <a href="#postback-event">postback event</a><br> | |
| Max: 300 characters</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">mode</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Action mode<br> | |
| <code>date</code>: Pick date<br> | |
| <code>time</code>: Pick time<br> | |
| <code>datetime</code>: Pick date and time</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">initial</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Initial value of date or time</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">max</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Largest date or time value that can be selected. Must be greater than the | |
| <code>min</code> value.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">min</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Optional</td> | |
| <td style="word-break: normal">Smallest date or time value that can be selected. Must be less than the | |
| <code>max</code> value.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h4 id="date-and-time-format" class="h4 h4">Date and time format</h4> | |
| <p>The date and time formats for the <code>initial</code>, <code>max</code>, and <code>min</code> values are | |
| shown below. The <code>full-date</code>, <code>time-hour</code>, and <code>time-minute</code> formats follow | |
| the <a href="https://www.ietf.org/rfc/rfc3339.txt" target="_blank">RFC3339</a> protocol.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Mode</th> | |
| <th class=" nowrap" style="word-break: normal">Format</th> | |
| <th class=" nowrap" style="word-break: normal">Example</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">date</td> | |
| <td style="word-break: normal"> | |
| <code>full-date</code><br> | |
| Max: 2100-12-31<br> | |
| Min: 1900-01-01</td> | |
| <td class=" nowrap" style="word-break: normal">2017-06-18</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">time</td> | |
| <td style="word-break: normal"> | |
| <code>time-hour</code>:<code>time-minute</code><br> | |
| Max: 23:59<br> | |
| Min: 00:00</td> | |
| <td style="word-break: normal">00:00<br> | |
| 06:15<br> | |
| 23:59</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">datetime</td> | |
| <td style="word-break: normal"> | |
| <code>full-date</code>T<code>time-hour</code>:<code>time-minute</code> or | |
| <code>full-date</code>t<code>time-hour</code>:<code>time-minute</code><br> | |
| Max: 2100-12-31T23:59<br> | |
| Min: 1900-01-01T00:00</td> | |
| <td style="word-break: normal">2017-06-18T06:15<br> | |
| 2017-06-18t06:15</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example datetime picker action object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"datetimepicker"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="s2">"Select date"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="s2">"storeId=12345"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"mode"</span><span class="p">:</span><span class="s2">"datetime"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"initial"</span><span class="p">:</span><span class="s2">"2017-12-25t00:00"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"max"</span><span class="p">:</span><span class="s2">"2018-01-24t23:59"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"min"</span><span class="p">:</span><span class="s2">"2017-12-25t00:00"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="camera-action" class="h3 h3">Camera action</h3> | |
| <p>This action can be configured only with quick reply buttons. When a button associated with this action is | |
| tapped, the camera screen in LINE is opened.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>camera</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">label</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Label for the action<br> | |
| Max: 20 characters</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example camera action object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"camera"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="s2">"Camera"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="camera-roll-action" class="h3 h3">Camera roll action</h3> | |
| <p>This action can be configured only with quick reply buttons. When a button associated with this action is | |
| tapped, the camera roll screen in LINE is opened.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>cameraRoll</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">label</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Label for the action<br> | |
| Max: 20 characters</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example camera roll action object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"cameraRoll"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="s2">"Camera roll"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="location-action" class="h3 h3">Location action</h3> | |
| <p>This action can be configured only with quick reply buttons. When a button associated with this action is | |
| tapped, the location screen in LINE is opened.</p> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">type</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td class=" nowrap" style="word-break: normal"><code>location</code></td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">label</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Label for the action<br> | |
| Max: 20 characters</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example location action object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="s2">"location"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="s2">"Location"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h2 id="rich-menu-structure" class="h2 h2">Rich menu structure</h2> | |
| <p>Rich menus consist of either of these objects.</p> | |
| <ul> | |
| <li> | |
| <a href="#rich-menu-object">Rich menu object</a> without the rich menu ID. Use this object when you <a | |
| href="#create-rich-menu">create a rich menu</a>.</li> | |
| <li> | |
| <a href="#rich-menu-response-object">Rich menu response object</a> with the rich menu ID. This object is | |
| returned when you <a href="#get-rich-menu">get a rich menu</a> or <a href="#get-rich-menu-list">get a list | |
| of rich menus</a>.</li> | |
| </ul> | |
| <p><a href="#area-object">Area objects</a> and <a href="#action-objects">action objects</a> are included in | |
| these objects.</p> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="rich-menu-object" class="h3 h3">Rich menu object</h3> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">size</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal"> | |
| <a href="#size-object"><code>size</code> object</a> which contains the width and height of the rich | |
| menu displayed in the chat. Rich menu images must be one of the following sizes (pixels): 2500x1686, | |
| 2500x843, 1200x810, 1200x405, 800x540, 800x270</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">selected</td> | |
| <td class=" nowrap" style="word-break: normal">Boolean</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal"> | |
| <code>true</code> to display the rich menu by default. Otherwise, <code>false</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">name</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Name of the rich menu. This value can be used to help manage your rich | |
| menus and is not displayed to users.<br> | |
| Max: 300 characters</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">chatBarText</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Text displayed in the chat bar<br> | |
| Max: 14 characters</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">areas</td> | |
| <td class=" nowrap" style="word-break: normal">Array</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Array of <a href="#area-object">area objects</a> which define the | |
| coordinates and size of tappable areas<br> | |
| Max: 20 area objects</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example rich menu object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">2500</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1686</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"selected"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Nice richmenu"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"chatBarText"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Tap to open"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"areas"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"bounds"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">2500</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1686</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"action"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=buy&itemid=123"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h3 id="rich-menu-response-object" class="h3 h3">Rich menu response object</h3> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td style="word-break: normal">richMenuId </td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Rich menu ID</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">size</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td style="word-break: normal"> | |
| <a href="#size-object"><code>size</code> object</a> which contains the width and height of the rich | |
| menu displayed in the chat. Rich menu images must be one of the following sizes (pixels): 2500x1686, | |
| 2500x843, 1200x810, 1200x405, 800x540, 800x270</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">selected</td> | |
| <td class=" nowrap" style="word-break: normal">Boolean</td> | |
| <td style="word-break: normal"> | |
| <code>true</code> to display the rich menu by default. Otherwise, <code>false</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">name</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Name of the rich menu. This value can be used to help manage your rich | |
| menus and is not displayed to users.<br> | |
| Max: 300 characters</td> | |
| </tr> | |
| <tr> | |
| <td style="word-break: normal">chatBarText</td> | |
| <td class=" nowrap" style="word-break: normal">String</td> | |
| <td style="word-break: normal">Text displayed in the chat bar<br> | |
| Max: 14 characters</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">areas</td> | |
| <td class=" nowrap" style="word-break: normal">Array</td> | |
| <td style="word-break: normal">Array of <a href="#area-object">area objects</a> which define the | |
| coordinates and size of tappable areas<br> | |
| Max: 20 area objects</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example rich menu response object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"richMenuId"</span><span class="p">:</span><span class="w"> </span><span class="s2">"{richMenuId}"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"size"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">2500</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1686</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"selected"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Nice richmenu"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"chatBarText"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Tap to open"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"areas"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> | |
| </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"bounds"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">2500</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1686</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"action"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="s2">"Buy"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=buy&itemid=123"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">]</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="size-object" class="h4 h4"> | |
| <code>size</code> object</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">width</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Width of the rich menu. Must be <code>2500</code>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">height</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Height of the rich menu. Possible values: <code>1686</code>, | |
| <code>843</code>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example size object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="mi">520</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="mi">1040</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h4 id="area-object" class="h4 h4">Area object</h4> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">bounds</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Object describing the boundaries of the area in pixels. See <a | |
| href="#bounds-object"><code>bounds</code> object</a>.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">action</td> | |
| <td class=" nowrap" style="word-break: normal">Object</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Action performed when the area is tapped. See <a | |
| href="#action-objects">action objects</a>.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example area object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"bounds"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="w"> </span><span class="mi">2500</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="w"> </span><span class="mi">1686</span><span class="w"> | |
| </span><span class="p">},</span><span class="w"> | |
| </span><span class="s2">"action"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"postback"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"label"</span><span class="p">:</span><span class="s2">"Buy"</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"action=buy&itemid=123"</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="SectionReference SectionReference-hasSide"> | |
| <div class="SectionReference_Spec"> | |
| <h5 id="bounds-object" class="h5 h5"> | |
| <code>bounds</code> object</h5> | |
| <table class="Table"> | |
| <thead class=" nowrap"> | |
| <tr> | |
| <th class=" nowrap" style="word-break: normal">Property</th> | |
| <th class=" nowrap" style="word-break: normal">Type</th> | |
| <th class=" nowrap" style="word-break: normal">Required</th> | |
| <th style="word-break: normal">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">x</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Horizontal position relative to the left edge of the area. Value must be | |
| <code>0</code> or higher.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">y</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Vertical position relative to the top of the area. Value must be | |
| <code>0</code> or higher.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">width</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Width of the area.</td> | |
| </tr> | |
| <tr> | |
| <td class=" nowrap" style="word-break: normal">height</td> | |
| <td class=" nowrap" style="word-break: normal">Number</td> | |
| <td class=" nowrap" style="word-break: normal">Required</td> | |
| <td style="word-break: normal">Height of the area.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <div class="SectionReference_Code"> | |
| <p class="SectionReference_CodeTitle"> Example bounds object</p> | |
| <div class="CodeSwitchBlock"> | |
| <pre class="highlight json js-show" data-code="plaintext"><code><span class="p">{</span><span class="w"> | |
| </span><span class="s2">"x"</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"y"</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"width"</span><span class="p">:</span><span class="mi">2500</span><span class="p">,</span><span class="w"> | |
| </span><span class="s2">"height"</span><span class="p">:</span><span class="mi">1686</span><span class="w"> | |
| </span><span class="p">}</span><span class="w"> | |
| </span></code></pre> | |
| </div> | |
| </div> | |
| </section> | |
| </div> | |
| </div> | |
| </div> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment