質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.53%

GitHubのline-bot-sdk-python-masterでflex-massage.pyを利用したいのですが書き方がわかりません。。。

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 954

m0t0

score 7

 前提・実現したいこと

linebotでflex_messageを使ってbotを作りたい!!
pythonでlinebotを作っています。GitHubのlinebot-sdkの中のflex_message.pyを利用したいのですが、”contents=”の後をどう書けばいいかわかりません。Josonを書けばいいのでしょうか?
下にcodeを載せます。

ここに質問の内容を詳しく書いてください。

 発生している問題・エラーメッセージ

from __future__ import unicode_literals

from abc import ABCMeta

from future.utils import with_metaclass

from .actions import get_action
from .base import Base
from .send_messages import SendMessage


class FlexSendMessage(SendMessage):
    """FlexSendMessage.

    https://developers.line.me/en/docs/messaging-api/reference/#flex-message

    Flex Messages are messages with a customizable layout.
    You can customize the layout freely by combining multiple elements.
    """

    def __init__(self, alt_text=None, contents=None, **kwargs):
        """__init__ method.

        :param str alt_text: Alternative text
        :param contents: Flex Message container object
        :type contents: :py:class:`linebot.models.flex_message.FlexContainer`
        :param kwargs:
        """
        super(FlexSendMessage, self).__init__(**kwargs)

        self.type = 'flex'
        self.alt_text = alt_text
        self.contents = contents
        self.contents = self.get_or_new_from_json_dict_with_types(
            contents, {
                'bubble': BubbleContainer,
                'carousel': CarouselContainer
            }
        )


class FlexContainer(with_metaclass(ABCMeta, Base)):
    """FlexContainer.

    https://developers.line.me/en/docs/messaging-api/reference/#container

    A container is the top-level structure of a Flex Message.
    """

    def __init__(self, **kwargs):
        """__init__ method.

        :param kwargs:
        """
        super(FlexContainer, self).__init__(**kwargs)

        self.type = None


class BubbleContainer(FlexContainer):
    """BubbleContainer.

    https://developers.line.me/en/docs/messaging-api/reference/#bubble-container

    This is a container that contains one message bubble.
    It can contain four blocks: header, hero, body, and footer.
    """

    def __init__(self, direction=None, header=None, hero=None, body=None, footer=None, styles=None,
                 **kwargs):
        """__init__ method.

        :param str direction: Text directionality and the order of components
            in horizontal boxes in the container
        :param header: Header block
        :type header: :py:class:`linebot.models.flex_message.BoxComponent`
        :param hero: Hero block
        :type hero: :py:class:`linebot.models.flex_message.ImageComponent`
        :param body: Body block
        :type body: :py:class:`linebot.models.flex_message.BoxComponent`
        :param footer: Footer block
        :type footer: :py:class:`linebot.models.flex_message.BoxComponent`
        :param styles: Style of each block
        :type styles: :py:class:`linebot.models.flex_message.BubbleStyle`
        :param kwargs:
        """
        super(BubbleContainer, self).__init__(**kwargs)

        self.type = 'bubble'
        self.direction = direction
        self.header = self.get_or_new_from_json_dict(header, BoxComponent)
        self.hero = self.get_or_new_from_json_dict(hero, ImageComponent)
        self.body = self.get_or_new_from_json_dict(body, BoxComponent)
        self.footer = self.get_or_new_from_json_dict(footer, BoxComponent)
        self.styles = self.get_or_new_from_json_dict(styles, BubbleStyle)


class BubbleStyle(with_metaclass(ABCMeta, Base)):
    """BubbleStyle.

    https://developers.line.me/en/docs/messaging-api/reference/#objects-for-the-block-style
    """

    def __init__(self, header=None, hero=None, body=None, footer=None, **kwargs):
        """__init__ method.

        :param header: Style of the header block
        :type header: :py:class:`linebot.models.flex_message.BlockStyle`
        :param hero: Style of the hero block
        :type hero: :py:class:`linebot.models.flex_message.BlockStyle`
        :param body: Style of the body block
        :type body: :py:class:`linebot.models.flex_message.BlockStyle`
        :param footer: Style of the footer block
        :type footer: :py:class:`linebot.models.flex_message.BlockStyle`
        :param kwargs:
        """
        super(BubbleStyle, self).__init__(**kwargs)

        self.header = self.get_or_new_from_json_dict(header, BlockStyle)
        self.hero = self.get_or_new_from_json_dict(hero, BlockStyle)
        self.body = self.get_or_new_from_json_dict(body, BlockStyle)
        self.footer = self.get_or_new_from_json_dict(footer, BlockStyle)


class BlockStyle(with_metaclass(ABCMeta, Base)):
    """BlockStyle.

    https://developers.line.me/en/docs/messaging-api/reference/#objects-for-the-block-style
    """

    def __init__(self, background_color=None, separator=None, separator_color=None, **kwargs):
        """__init__ method.

        :param str background_color: Background color of the block. Use a hexadecimal color code
        :param bool separator: True to place a separator above the block
            True will be ignored for the first block in a container
            because you cannot place a separator above the first block.
            The default value is False
        :param str separator_color: Color of the separator. Use a hexadecimal color code
        :param kwargs:
        """
        super(BlockStyle, self).__init__(**kwargs)
        self.background_color = background_color
        self.separator = separator
        self.separator_color = separator_color


class CarouselContainer(FlexContainer):
    """CarouselContainer.

    https://developers.line.me/en/docs/messaging-api/reference/#carousel-container

    This is a container that contains multiple bubble containers, or message bubbles.
    The bubbles will be shown in order by scrolling horizontally.
    """

    def __init__(self, contents=None, **kwargs):
        """__init__ method.

        :param contents: Array of bubble containers
        :type contents: list[T <= :py:class:`linebot.models.flex_message.BubbleContainer`]
        :param kwargs:
        """
        super(CarouselContainer, self).__init__(**kwargs)

        self.type = 'carousel'

        new_contents = []
        if contents:
            for it in contents:
                new_contents.append(self.get_or_new_from_json_dict(
                    it, BubbleContainer
                ))
        self.contents = new_contents


class FlexComponent(with_metaclass(ABCMeta, Base)):
    """FlexComponent.

    https://developers.line.me/en/docs/messaging-api/reference/#component

    Components are objects that compose a Flex Message container.
    """

    def __init__(self, **kwargs):
        """__init__ method.

        :param kwargs:
        """
        super(FlexComponent, self).__init__(**kwargs)

        self.type = None

 
…………
……
…(略)

 該当のソースコード

python 

 試したこと

 補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る