Skip to content

Commit

Permalink
Add validating message objects APIs (#409)
Browse files Browse the repository at this point in the history
  • Loading branch information
Yang-33 committed Feb 10, 2023
1 parent 048e05e commit c950e25
Show file tree
Hide file tree
Showing 6 changed files with 642 additions and 7 deletions.
57 changes: 56 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,61 @@ https://developers.line.biz/en/reference/messaging-api/#get-narrowcast-progress-
print(narrowcast.target_count)
validate\_reply\_message\_objects(self, messages, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Validate that an array of message objects used for reply message is valid.

https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-reply-message

.. code:: python
line_bot_api.validate_reply_message_objects(TextSendMessage(text='Hello World!'))
validate\_push\_message\_objects(self, messages, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Validate that an array of message objects used for push message is valid.

https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-push-message

.. code:: python
line_bot_api.validate_push_message_objects(TextSendMessage(text='Hello World!'))
validate\_multicast\_message\_objects(self, messages, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Validate that an array of message objects used for multicast message is valid.

https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-multicast-message

.. code:: python
line_bot_api.validate_multicast_message_objects(TextSendMessage(text='Hello World!'))
validate\_broadcast\_message\_objects(self, messages, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Validate that an array of message objects used for broadcast message is valid.

https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-broadcast-message

.. code:: python
line_bot_api.validate_broadcast_message_objects(TextSendMessage(text='Hello World!'))
validate\_narrowcast\_message\_objects(self, messages, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Validate that an array of message objects used for narrowcast message is valid.

https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-narrowcast-message

.. code:: python
line_bot_api.validate_narrowcast_message_objects(TextSendMessage(text='Hello World!'))
get\_profile(self, user\_id, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand Down Expand Up @@ -764,7 +819,7 @@ TextSendMessage-Emoji
"index": 0,
"productId": "5ac1bfd5040ab15980c9b435",
"emojiId": "001"
},
},
{
"index": 13,
"productId": "5ac1bfd5040ab15980c9b435",
Expand Down
177 changes: 175 additions & 2 deletions linebot/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@
Group, UserIds, RichMenuAliasResponse, RichMenuAliasListResponse, ChannelAccessTokens,
IssueChannelTokenResponseV2, VerifyChannelTokenResponseV2, ValidAccessTokenKeyIDsResponse,
InsightMessageEventOfCustomAggregationUnitResponse, AggregationInfoResponse,
AggregationNameListResponse
AggregationNameListResponse,
ValidateBroadcastMessageObjectsResponse,
ValidateMulticastMessageObjectsResponse, ValidateNarrowcastMessageObjectsResponse,
ValidatePushMessageObjectsResponse, ValidateReplyMessageObjectsResponse,
)


Expand Down Expand Up @@ -174,7 +177,7 @@ def multicast(self, to, messages, retry_key=None, notification_disabled=False,
Messages cannot be sent to groups or rooms.
:param to: IDs of the receivers
Max: 150 users
Max: 500 users
:type to: list[str]
:param messages: Messages.
Max: 5
Expand Down Expand Up @@ -327,6 +330,176 @@ def get_progress_status_narrowcast(self, request_id, timeout=None):

return MessageProgressNarrowcastResponse.new_from_json_dict(response.json)

def validate_reply_message_objects(self, messages, timeout=None):
"""Call validate reply message objects API.
https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-reply-message
You can validate that an array of message objects is valid as a value
for the messages property of the request body for the send reply message endpoint.
:param messages: Messages.
Max: 5
:type messages: T <= :py:class:`linebot.models.send_messages.SendMessage` |
list[T <= :py:class:`linebot.models.send_messages.SendMessage`]
:param timeout: (optional) How long to wait for the server
to send data before giving up, as a float,
or a (connect timeout, read timeout) float tuple.
Default is self.http_client.timeout
:type timeout: float | tuple(float, float)
:rtype: :py:class:`linebot.models.responses.ValidateReplyMessageObjectsResponse`
"""
if not isinstance(messages, (list, tuple)):
messages = [messages]

data = {
'messages': [message.as_json_dict() for message in messages],
}

response = self._post(
'/v2/bot/message/validate/reply', data=json.dumps(data),
timeout=timeout
)

return ValidateReplyMessageObjectsResponse(
request_id=response.headers.get('X-Line-Request-Id'))

def validate_push_message_objects(self, messages, timeout=None):
"""Call validate push message objects API.
https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-push-message
You can validate that an array of message objects is valid as a value
for the messages property of the request body for the send push message endpoint.
:param messages: Messages.
Max: 5
:type messages: T <= :py:class:`linebot.models.send_messages.SendMessage` |
list[T <= :py:class:`linebot.models.send_messages.SendMessage`]
:param timeout: (optional) How long to wait for the server
to send data before giving up, as a float,
or a (connect timeout, read timeout) float tuple.
Default is self.http_client.timeout
:type timeout: float | tuple(float, float)
:rtype: :py:class:`linebot.models.responses.ValidatePushMessageObjectsResponse`
"""
if not isinstance(messages, (list, tuple)):
messages = [messages]

data = {
'messages': [message.as_json_dict() for message in messages],
}

response = self._post(
'/v2/bot/message/validate/push', data=json.dumps(data),
timeout=timeout
)

return ValidatePushMessageObjectsResponse(
request_id=response.headers.get('X-Line-Request-Id'))

def validate_multicast_message_objects(self, messages, timeout=None):
"""Call validate multicast message objects API.
https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-multicast-message
You can validate that an array of message objects is valid as a value
for the messages property of the request body for the send multicast message endpoint.
:param messages: Messages.
Max: 5
:type messages: T <= :py:class:`linebot.models.send_messages.SendMessage` |
list[T <= :py:class:`linebot.models.send_messages.SendMessage`]
:param timeout: (optional) How long to wait for the server
to send data before giving up, as a float,
or a (connect timeout, read timeout) float tuple.
Default is self.http_client.timeout
:type timeout: float | tuple(float, float)
:rtype: :py:class:`linebot.models.responses.ValidateMulticastMessageObjectsResponse`
"""
if not isinstance(messages, (list, tuple)):
messages = [messages]

data = {
'messages': [message.as_json_dict() for message in messages],
}

response = self._post(
'/v2/bot/message/validate/multicast', data=json.dumps(data),
timeout=timeout
)

return ValidateMulticastMessageObjectsResponse(
request_id=response.headers.get('X-Line-Request-Id'))

def validate_broadcast_message_objects(self, messages, timeout=None):
"""Call validate broadcast message objects API.
https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-broadcast-message
You can validate that an array of message objects is valid as a value
for the messages property of the request body for the send broadcast message endpoint.
:param messages: Messages.
Max: 5
:type messages: T <= :py:class:`linebot.models.send_messages.SendMessage` |
list[T <= :py:class:`linebot.models.send_messages.SendMessage`]
:param timeout: (optional) How long to wait for the server
to send data before giving up, as a float,
or a (connect timeout, read timeout) float tuple.
Default is self.http_client.timeout
:type timeout: float | tuple(float, float)
:rtype: :py:class:`linebot.models.responses.ValidateBroadcastMessageObjectsResponse`
"""
if not isinstance(messages, (list, tuple)):
messages = [messages]

data = {
'messages': [message.as_json_dict() for message in messages],
}

response = self._post(
'/v2/bot/message/validate/broadcast', data=json.dumps(data),
timeout=timeout
)

return ValidateBroadcastMessageObjectsResponse(
request_id=response.headers.get('X-Line-Request-Id'))

def validate_narrowcast_message_objects(self, messages, timeout=None):
"""Call validate narrowcast message objects API.
https://developers.line.biz/en/reference/messaging-api/#validate-message-objects-of-narrowcast-message
You can validate that an array of message objects is valid as a value
for the messages property of the request body for the send narrowcast message endpoint.
:param messages: Messages.
Max: 5
:type messages: T <= :py:class:`linebot.models.send_messages.SendMessage` |
list[T <= :py:class:`linebot.models.send_messages.SendMessage`]
:param timeout: (optional) How long to wait for the server
to send data before giving up, as a float,
or a (connect timeout, read timeout) float tuple.
Default is self.http_client.timeout
:type timeout: float | tuple(float, float)
:rtype: :py:class:`linebot.models.responses.ValidateNarrowcastMessageObjectsResponse`
"""
if not isinstance(messages, (list, tuple)):
messages = [messages]

data = {
'messages': [message.as_json_dict() for message in messages],
}

response = self._post(
'/v2/bot/message/validate/narrowcast', data=json.dumps(data),
timeout=timeout
)

return ValidateNarrowcastMessageObjectsResponse(
request_id=response.headers.get('X-Line-Request-Id'))

def get_message_delivery_broadcast(self, date, timeout=None):
"""Get number of sent broadcast messages.
Expand Down

0 comments on commit c950e25

Please sign in to comment.