def test_init(): now = datetime.now(timezone("Asia/Tokyo")) message = Message( id="mid123456789", type="hogehoge", timestamp=now, channel="TEST", channel_detail="messaging", channel_user_id="user_id", channel_message={"text": "hello"}, text="hello", token="token123456789", payloads=[Payload(content_type="image", url="https://image")], intent="OrderPan", intent_priority=Priority.High, entities={ "menu": "Yakisoba Pan", "count": 20 }, is_adhoc=True) assert message.id == "mid123456789" assert message.type == "hogehoge" assert message.timestamp == now assert message.channel == "TEST" assert message.channel_detail == "messaging" assert message.channel_user_id == "user_id" assert message.channel_message == {"text": "hello"} assert message.text == "hello" assert message.token == "token123456789" assert message.payloads[0].url == "https://image" assert message.intent == "OrderPan" assert message.intent_priority == Priority.High assert message.entities == {"menu": "Yakisoba Pan", "count": 20} assert message.is_adhoc is True
def test_to_reply(): now = datetime.now(timezone("Asia/Tokyo")) message = Message(id="mid123456789", type="hogehoge", timestamp=now, channel="TEST", channel_detail="messaging", channel_user_id="user_id", text="hello", token="token123456789", channel_message={ "text": "hello" }).to_reply(text="nice talking to you", payloads=[ Payload(content_type="image", url="https://image") ], type="image") assert message.id == "mid123456789" assert message.type == "image" assert isinstance(message.timestamp, datetime) assert str(message.timestamp.tzinfo) == "Asia/Tokyo" assert message.channel == "TEST" assert message.channel_detail == "messaging" assert message.channel_user_id == "user_id" assert message.text == "nice talking to you" assert message.token == "token123456789" assert message.payloads[0].url == "https://image" assert message.channel_message is None
def test_from_dict(): now = datetime.now(timezone("Asia/Tokyo")) message = Message( id="mid123456789", type="hogehoge", timestamp=now, channel="TEST", channel_detail="messaging", channel_user_id="user_id", text="hello", token="token123456789", payloads=[Payload(content_type="image", url="https://image")], channel_message={"text": "hello"}) msg_dict = message.to_dict() message = Message.from_dict(msg_dict) assert message.id == "mid123456789" assert message.type == "hogehoge" assert message.timestamp == now assert message.channel == "TEST" assert message.channel_detail == "messaging" assert message.channel_user_id == "user_id" assert message.text == "hello" assert message.token == "token123456789" assert message.payloads[0].url == "https://image" assert message.channel_message == str({"text": "hello"})
def test_init(): payload = Payload(content_type="image/jpeg", url="http://uezo.net/img/minette_architecture.png", thumb="https://thumb") assert payload.content_type == "image/jpeg" assert payload.url == "http://uezo.net/img/minette_architecture.png" assert payload.thumb == "https://thumb" assert payload.headers == {} assert payload.content is None
def test_to_dict(): now = datetime.now(timezone("Asia/Tokyo")) message = Message( id="mid123456789", type="hogehoge", timestamp=now, channel="TEST", channel_detail="messaging", channel_user_id="user_id", text="hello", token="token123456789", payloads=[Payload(content_type="image", url="https://image")], channel_message={"text": "hello"}) msg_dict = message.to_dict() assert msg_dict["id"] == "mid123456789" assert msg_dict["timestamp"] == now
def _to_minette_message(self, event): """ Convert Symphony Event object to Minette Message object Parameters ---------- event : Event Event from Symphony. See the url below for information https://developers.symphony.com/restapi/docs/real-time-events Returns ------- message : minette.Message Request message object """ if self.debug: self.logger.info(event) msg = Message(type=event["type"], channel="Symphony", channel_detail="", channel_user_id=str( event["initiator"]["user"]["userId"]), channel_message=event) if msg.type == "MESSAGESENT": m = event["payload"]["messageSent"]["message"] msg.token = m["stream"]["streamId"] msg.text = lxml.html.fromstring(m["message"]).text_content() if m["stream"]["streamType"] == "ROOM": msg.group = Group(id=m["stream"]["streamId"], type="ROOM") if "attachments" in m: for a in m["attachments"]: if len(a["images"]) > 0: content_type = "image" else: content_type = "file" msg.payloads.append( Payload(content_type=content_type, content=a)) return msg
def test_to_channel_message(): # payload = next(iter([p for p in message.payloads if p.content_type != "quick_reply"]), None) # quick_reply = next(iter([p.content for p in message.payloads if p.content_type == "quick_reply"]), None) message = LineAdapter._to_channel_message(Message(text="hello")) assert isinstance(message, TextSendMessage) assert message.text == "hello" message = LineAdapter._to_channel_message( Message(type="image", payloads=[Payload(url="https://image", thumb="https://thumb")])) assert isinstance(message, ImageSendMessage) assert message.original_content_url == "https://image" assert message.preview_image_url == "https://thumb" message = LineAdapter._to_channel_message( Message( type="audio", payloads=[Payload(url="https://audio", content={"duration": 1.2})])) assert isinstance(message, AudioSendMessage) assert message.original_content_url == "https://audio" assert message.duration == 1.2 message = LineAdapter._to_channel_message( Message(type="video", payloads=[Payload(url="https://video", thumb="https://thumb")])) assert isinstance(message, VideoSendMessage) assert message.original_content_url == "https://video" assert message.preview_image_url == "https://thumb" message = LineAdapter._to_channel_message( Message(type="location", payloads=[ Payload( content={ "title": "Jiyugaoka", "address": "1-2-3 Jiyugaoka, Meguro-ku, Tokyo", "latitude": 35.607757, "longitude": 139.668411 }) ])) assert isinstance(message, LocationSendMessage) assert message.title == "Jiyugaoka" assert message.address == "1-2-3 Jiyugaoka, Meguro-ku, Tokyo" assert message.latitude == 35.607757 assert message.longitude == 139.668411 message = LineAdapter._to_channel_message( Message(type="sticker", payloads=[ Payload(content={ "package_id": "11537", "sticker_id": "52002734" }) ])) assert isinstance(message, StickerSendMessage) assert message.package_id == "11537" assert message.sticker_id == "52002734" imagemap_action = { "type": "uri", "label": "https://example.com/", "linkUri": "https://example.com/", "area": { "x": 0, "y": 0, "width": 520, "height": 1040 } } message = LineAdapter._to_channel_message( Message(type="imagemap", text="imagemap message", payloads=[ Payload(url="https://imagemap", content={ "base_size": { "width": 1040, "height": 585 }, "actions": [imagemap_action] }) ])) assert isinstance(message, ImagemapSendMessage) assert message.alt_text == "imagemap message" assert message.base_url == "https://imagemap" assert message.base_size.width == 1040 assert message.base_size.height == 585 assert message.actions[0].type == "uri" assert message.actions[0].link_uri == "https://example.com/" assert message.actions[0].area.width == 520 template = { "type": "buttons", "thumbnailImageUrl": "https://example.com/bot/images/image.jpg", "imageAspectRatio": "rectangle", "imageSize": "cover", "imageBackgroundColor": "#FFFFFF", "title": "Menu", "text": "Please select", "defaultAction": { "type": "uri", "label": "View detail", "uri": "http://example.com/page/123" }, "actions": [{ "type": "postback", "label": "Buy", "data": "action=buy&itemid=123" }, { "type": "postback", "label": "Add to cart", "data": "action=add&itemid=123" }, { "type": "uri", "label": "View detail", "uri": "http://example.com/page/123" }] } message = LineAdapter._to_channel_message( Message(type="template", text="template message", payloads=[Payload(content=template)])) assert isinstance(message, TemplateSendMessage) assert message.alt_text == "template message" assert isinstance(message.template, ButtonsTemplate) flex = { "type": "bubble", "body": { "type": "box", "layout": "vertical", "contents": [{ "type": "text", "text": "hello" }, { "type": "text", "text": "world" }] } } message = LineAdapter._to_channel_message( Message(type="flex", text="flex message", payloads=[Payload(content=flex)])) assert isinstance(message, FlexSendMessage) assert message.alt_text == "flex message" assert isinstance(message.contents, FlexContainer) message = LineAdapter._to_channel_message(Message(type="unknown")) assert message is None
def compose_response(self, request, context, connection): assert request.words == [] request.words = self.dependencies.tagger.parse_as_generator(request.text, max_length=10) return request.to_reply( text=request.text, payloads=[Payload(content_type="data", content=request.words)])
def compose_response(self, request, context, connection): return request.to_reply( text=request.text, payloads=[Payload(content_type="data", content=request.words)])