AI LINE Bot練功坊-L7 Message Type (1) === ## Message Type * Text Message 文字訊息 * Sticker Message 貼圖訊息 * Image Message 圖片訊息 * Video Message 影片訊息 * Audio Message 音訊訊息 * Location Message 地點訊息 * Imagemap Message 圖片地圖訊息 * Template Message 模板訊息 * Flex Message 彈性訊息 後面的課程再仔細介紹Imagemap Message、Template Message、Flex Message ## 匯入函式庫 ```python from linebot.v3.messaging import ( TextMessage, StickerMessage, ImageMessage, VideoMessage, AudioMessage, LocationMessage ) ``` ### 1. Text message 文字訊息 最基本的Message API類型之一,只傳遞**文字**。 **規則:** 1. Unicode 表情符號 2. Line 表情符號 3. 最多5000字 **程式碼:** ```python TextMessage(text="這是文字訊息") ``` 透過TextMessage(text="這是文字訊息")把特定文字傳入聊天室。 #### 可以加入表情符號 ```python #設定表情符號,index為表情符號在文字訊息的字元位置(從0開始算);product_id為表情包編號;emoji_id為特定表情符號編號 emojis = [Emoji(index=0, product_id="5ac1bfd5040ab15980c9b435", emoji_id="001"), Emoji(index=12, product_id="5ac1bfd5040ab15980c9b435", emoji_id="002")] #$代表我們的表情符號 messages=[TextMessage(text='$ LINE 表情符號 $', emojis=emojis)] ``` emoji 對應的編號 : https://developers.line.biz/en/docs/messaging-api/emoji-list/#line-emoji-definitions **效果展示:** ![image](https://hackmd.io/_uploads/SyNKrBKx0.png) >Reference:https://developers.line.biz/en/docs/messaging-api/message-types/#text-messages ### 2. Sticker message 貼圖訊息 最基本的Message API類型之一,只傳遞**貼圖**。 **規則:** 1. 輸入貼圖的ID **程式碼:** ```python StickerMessage( package_id="446", sticker_id="1988" ) ``` package_id是貼圖包的編號,sticker_id是特定貼圖的編號。 連結是Line官方提供的貼圖包和特定貼圖的id,可以查詢想用的貼圖使用: https://developers.line.biz/en/docs/messaging-api/sticker-list/#sticker-definitions ![image](https://hackmd.io/_uploads/H1I6xptaa.png) ###### 圖片來源:Line Developer官方網站 **效果展示:** ![image](https://hackmd.io/_uploads/B1SmhTYap.png) >Reference: https://developers.line.biz/en/docs/messaging-api/message-types/#sticker-messages ### 3. Image message 圖片訊息 最基本的Message API類型之一,只傳遞**圖片**。 **規則:** 1. 圖片 URL (最多字數: 2000) 2. 前綴為HTTPS 3. 圖片格式: JPEG 或 PNG 4. 圖片檔案大小: 10 MB以內 **程式碼:** ```python ImageMessage( original_content_url=url, preview_image_url=url ) ``` original_content_url=url是要傳送的圖片的位置, preview_image_url=url是預覽圖片的位置。 **效果展示:** ![image](https://hackmd.io/_uploads/Skil2aKT6.png) url要提供想要傳送的圖片的位置,可以使用本地端的圖片或網路上的圖: #### 3-1 網路圖片 輸入圖片網址,例如: ` url = "https://example.com/original.jpg"` #### 3-2 本地圖片 抓取本地圖片到架設好的伺服器上。 ``` #伺服器的url+圖片在本地端的位置 url = request.url_root + '/static/Logo.jpg' #把https前綴改成http url = url.replace("http", "https") app.logger.info("url=" + url) ``` >Reference: https://developers.line.biz/en/docs/messaging-api/message-types/#image-messages ### 4. Video message 影片訊息 最基本的Message API類型之一,只傳遞**影片**。 **規則:** 1. 影片 URL (最多字數: 2000) 2. 前綴為HTTPS 3. 影片格式: mp4 4. 影片檔案大小: 200 MB以內 **程式碼:** ```python VideoMessage( original_content_url=url, preview_image_url=url ) ``` 影片的程式內容和圖片相似,可參考[<3. Image message 圖片訊息>](https://hackmd.io/EQdxlaDDTVaIJQjdKmA00Q?view#3-Image-message-%E5%9C%96%E7%89%87%E8%A8%8A%E6%81%AF) **效果展示:** ![image](https://hackmd.io/_uploads/HJMt3pFpT.png) >Reference: https://developers.line.biz/en/docs/messaging-api/message-types/#video-messages ### 5. Audio message 音訊訊息 最基本的Message API類型之一,只傳遞**音訊**。 **規則:** 1. 音訊 URL (最多字數: 2000) 2. 前綴為HTTPS 3. 音訊格式: mp3 或 m4a 4. 音訊檔案大小: 200 MB **程式碼:** ```python AudioMessage( original_content_url=url, duration=duration ) ``` 音訊的程式內容和圖片相似,可參考[<3. Image message 圖片訊息>](https://hackmd.io/EQdxlaDDTVaIJQjdKmA00Q?view#3-Image-message-%E5%9C%96%E7%89%87%E8%A8%8A%E6%81%AF) **效果展示:** ![image](https://hackmd.io/_uploads/Sk9a3pKTT.png) >Reference: https://developers.line.biz/en/docs/messaging-api/message-types/#audio-messages ### 6. Location message 地點訊息 最基本的Message API類型之一,只傳遞**地點**。 **規則:** 1. latitude、longitude,最多字數各100字 **程式碼:** ```python LocationMessage( title='Location', address="Taipei", latitude=25.0475, longitude=121.5173 ) ``` title是位置訊息的標題, address放你想說明的位置,latitude、longitude是位置的座標。 **效果展示:** ![image](https://hackmd.io/_uploads/Syek6aYpa.png) >Reference: https://developers.line.biz/en/docs/messaging-api/message-types/#location-messages Youtube 課程影片 --- <iframe width="560" height="315" src="https://www.youtube.com/embed/4a9ihVBrlKY?si=yAUdX7z1PU4hNmqs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> {%hackmd @ntuebigdata/about %} ## 相關教材連結 <div style="display: flex; justify-content:space-between;"> <div> <a class="btn btn-warning" href="https://hackmd.io/@ntuebigdata/sending-message" style="color:white;width:300px;text-overflow:ellipsis;overflow:hidden">◀◀◀ L06 Sending Message ◀◀◀</a> </div> <div> <a class="btn btn-info" href="https://hackmd.io/@ntuebigdata/message-type-2-template-message" style="color:white;width:300px;text-overflow:ellipsis;overflow:hidden">▶▶▶ L08 Message Type(2) Template Message ▶▶▶</a> </div> </div>