iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 15
0
AI & Machine Learning

ChatBot&Chatbase系列 第 15

Day15[Line ChatBot]Messaging types下集

Message types下集來介紹:

  • Location
  • Imagemap
  • Template

接續著上集的程式繼續寫...

6.Location 位置訊息
位置訊息目前是寫死的方式,直接指定經緯度
經緯度可以在 http://card.url.com.tw/realads/map_latlng.php 查詢
title 跟 address 指的地方 (如下圖)
https://ithelp.ithome.com.tw/upload/images/20180103/20107144mybmPPGFiu.png

elif event.message.text == "位置":
        line_bot_api.reply_message(event.reply_token,LocationSendMessage(title='my location', address='Tainan', latitude=22.994821, longitude=120.196452))

當收到的訊息內容為"位置",就會回覆位置訊息 (如下圖)
https://ithelp.ithome.com.tw/upload/images/20180103/20107144k4F9pAPAce.png
點位置訊息
如果是電腦版的Line會直接連結到瀏覽器的googlemap
如果是手機板會在Line應用程式直接開啟map (如下圖)
https://ithelp.ithome.com.tw/upload/images/20180103/20107144yG262BfimB.jpg

7.Imagemap
目前遇到的問題是不知道為什麼會出現以下畫面
有確定網路連線
https://ithelp.ithome.com.tw/upload/images/20180103/20107144h6nS1WfTV7.png

 elif event.message.text == "位置2":
        imagemap_message = ImagemapSendMessage(
                        base_url=''
                        alt_text='this is an imagemap',
                        base_size=BaseSize(height=520, width=520),
                        actions=[
                            URIImagemapAction(
                                link_uri='',
                                area=ImagemapArea(
                                    x=174, y=65, width=707, height=416
                                )
                            ),
                            MessageImagemapAction(
                                text='hello',
                                area=ImagemapArea(
                                    x=520, y=0, width=520, height=520
                                )
                            )
                        ]
                    )
        line_bot_api.reply_message(event.reply_token,imagemap_message)

官方Demo https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png
https://ithelp.ithome.com.tw/upload/images/20180103/20107144u5M1O7zNZa.png
之後如果有找出問題再來更新!!

8.Template 樣板訊息

Template分為四種:

  • Buttons
  • Confirm
  • Carousel
  • Image carousel

Template訊息跟其他的Messaging types不一樣的地方在於
在電腦版的Line是顯示不出來的,會用alt_text替代 (如下圖)
https://ithelp.ithome.com.tw/upload/images/20180103/201071441LhdReBmY3.png
需要用手機板的Line查看才可以出現預期的效果喔!

** Buttons Template**
按鈕樣板分為三種可以使用的型態:
MessageTemplateAction是純粹的訊息
URITemplateAction是網址的使用
PostbackTemplateAction是含有值的訊息回覆

   elif event.message.text == "Buttons Template":
        buttons_template = TemplateSendMessage(
        alt_text='Buttons Template',
        template=ButtonsTemplate(
            title='這是ButtonsTemplate',
            text='ButtonsTemplate可以傳送text,uri',
            thumbnail_image_url='顯示在開頭的大圖片網址',
            actions=[
                MessageTemplateAction(
                    label='ButtonsTemplate',
                    text='ButtonsTemplate'
                ),
                URITemplateAction(
                    label='VIDEO1',
                    uri='影片網址'
                ),
                PostbackTemplateAction(
                    label='postback',
                    text='postback text',
                    data='postback1'
                )
            ]
        )
    )
    line_bot_api.reply_message(event.reply_token, buttons_template)

當收到的訊息內容為"Buttons Template",就會回覆Buttons Template訊息 (如下圖)
https://ithelp.ithome.com.tw/upload/images/20180103/20107144FaRLS2uNCS.jpg

Confirm Template
Confirm Template可用的型態只有兩種:MessageTemplateAction和PostbackTemplateAction

    elif event.message.text == "Confirm template":
        print("Confirm template")       
        Confirm_template = TemplateSendMessage(
        alt_text='目錄 template',
        template=ConfirmTemplate(
            title='這是ConfirmTemplate',
            text='這就是ConfirmTemplate,用於兩種按鈕選擇',
            actions=[                              
                PostbackTemplateAction(
                    label='Y',
                    text='Y',
                    data='action=buy&itemid=1'
                ),
                MessageTemplateAction(
                    label='N',
                    text='N'
                )
            ]
        )
    )
        line_bot_api.reply_message(event.reply_token,Confirm_template)

當收到的訊息內容為"Confirm template",就會回覆Confirm template訊息 (如下圖)
https://ithelp.ithome.com.tw/upload/images/20180103/201071448OjmkvksX2.jpg

Carousel template
Carousel template可用的型態和Buttons Template一樣
Carousel template就像很多個Buttons Template,一次最多可以有10則

     elif event.message.text == "Carousel template":
        Carousel_template = TemplateSendMessage(
        alt_text='Carousel template',
        template=CarouselTemplate(
        columns=[
            CarouselColumn(
                thumbnail_image_url='顯示在開頭的大圖片網址',
                title='this is menu1',
                text='description1',
                actions=[
                    PostbackTemplateAction(
                        label='postback1',
                        text='postback text1',
                        data='action=buy&itemid=1'
                    ),
                    MessageTemplateAction(
                        label='message1',
                        text='message text1'
                    ),
                    URITemplateAction(
                        label='uri1',
                        uri='http://example.com/1'
                    )
                ]
            ),
            CarouselColumn(
                thumbnail_image_url='顯示在開頭的大圖片網址',
                title='this is menu2',
                text='description2',
                actions=[
                    PostbackTemplateAction(
                        label='postback2',
                        text='postback text2',
                        data='action=buy&itemid=2'
                    ),
                    MessageTemplateAction(
                        label='message2',
                        text='message text2'
                    ),
                    URITemplateAction(
                        label='連結2',
                        uri='http://example.com/2'
                    )
                ]
            )
        ]
    )
    )
        line_bot_api.reply_message(event.reply_token,Carousel_template)

當收到的訊息內容為"Carousel template",就會回覆Carousel template訊息 (如下圖)
https://ithelp.ithome.com.tw/upload/images/20180103/201071440QpavcJjby.jpg

Image Carousel template
Image Carousel template跟Carousel template很像,最多也是一次10則
Image Carousel template是大圖顯示,一則只會執行一個action

    elif event.message.text == "Image Carousel":
        print("Image Carousel")       
        Image_Carousel = TemplateSendMessage(
        alt_text='目錄 template',
        template=ImageCarouselTemplate(
        columns=[
            ImageCarouselColumn(
                image_url='圖片網址',
                action=PostbackTemplateAction(
                    label='postback1',
                    text='postback text1',
                    data='action=buy&itemid=1'
                )
            ),
            ImageCarouselColumn(
                image_url='圖片網址',
                action=PostbackTemplateAction(
                    label='postback2',
                    text='postback text2',
                    data='action=buy&itemid=2'
                )
            )
        ]
    )
    )
        line_bot_api.reply_message(event.reply_token,Image_Carousel)

當收到的訊息內容為"Image Carousel template",就會回覆Image Carousel template訊息 (如下圖)
https://ithelp.ithome.com.tw/upload/images/20180103/20107144l8p9y4rzYf.jpg

參考資料
SDK of the LINE Messaging API for Python
https://pypi.python.org/pypi/line-bot-sdk

完整程式碼: https://github.com/Tzuhui/LineBot2


上一篇
Day14[Line ChatBot]Messaging types上集
下一篇
Day16[Line ChatBot]Dialogflow介紹
系列文
ChatBot&Chatbase30

尚未有邦友留言

立即登入留言