line-bot-sdk-python을 사용한 Datetime picker action 구현 및 Image Carousel 구현 샘플

소개



최근 LINE Messaging API에 Datetime picker actionImage Carousel 가 추가되었으므로 샘플
Image Carousel 에 관해서는 나가 PR를 냈습니다. 빌어 먹을 PR 나와서 죄송합니다 ...

환경


  • ngrok <- localhost로 쉽게 테스트하고 싶었기 때문에 넣습니다.
  • line-bot-sdk-python==1.4.0
  • Python3.6.2
  • Django==1.10.5
  • signature 등의 체크는 이번 생략합니다.

    Datetime picker action 샘플



    위의 테스트 코드의 샘플 코드 ( L129~202 )에서는 움직이지 않았기 때문에 자신이 구현했을 때 움직인 샘플에서
    from django.http import HttpResponse
    from linebot import LineBotApi, WebhookParser
    from linebot.models import TemplateSendMessage, ButtonsTemplate, DatetimePickerTemplateAction
    
    line_bot_api = LineBotApi('LINE_CHANNEL_ACCESS_TOKEN')
    parser = WebhookParser('LINE_CHANNEL_SECRET')
    
    
    def webhook(request):
        # Signatureチェック等
    
        for event in events:
            date_picker = TemplateSendMessage(
                alt_text='予定日を設定',
                template=ButtonsTemplate(
                    text='予定日を設定',
                    title='YYYY-MM-dd',
                    actions=[
                        DatetimePickerTemplateAction(
                            label='設定',
                            data='action=buy&itemid=1',
                            mode='date',
                            initial='2017-04-01',
                            min='2017-04-01',
                            max='2099-12-31'
                        )
                    ]
                )
            )
    
            line_bot_api.reply_message(
                event.reply_token,
                date_picker
            )
    
        return HttpResponse()
    

    LINE 앱 측에서 시간이 전송되면 서버 측에는 PostbackEvent 로 값을 얻을 수 있습니다.
    최종 사용자가 설정한 시간은 아래에서 얻을 수 있습니다.
    if isinstance(event, PostbackEvent):
        event.postback.params['date'] # dictのキーはmodeのもの
    


    DatetimePickerTemplateActionmodedate time datetime 로 설정할 수 있습니다.
    자세한 내용은 다음 참조

    Datetime picker action | LINE API Reference

    Image Carousel 샘플


    from line.models import ImageCarouselTemplate, ImageCarouselColumn
    
    image_carousel_template_message = TemplateSendMessage(
        alt_text='Image carousel template',
        template=ImageCarouselTemplate(
            columns=[
                ImageCarouselColumn(
                    image_url='https://example.com/item1.jpg',
                    action=PostbackTemplateAction(
                         label='postback1',
                         data='action=buy&itemid=1'
                    )
                ),
                ImageCarouselColumn(
                    image_url='https://example.com/item2.jpg',
                    action=MessageTemplateAction(
                        label='message2',
                        text='message text2'
                    )
                ),
                ImageCarouselColumn(
                    image_url='https://example.com/item3.jpg',
                    action=URITemplateAction(
                        label='uri1',
                        uri='https://example.com/1'
                    )
                )
            ]
        )
    )
    

    좋은 웹페이지 즐겨찾기