@@ -109,7 +109,9 @@ def reply_message(self, reply_token, messages, notification_disabled=False, time
109109 '/v2/bot/message/reply' , data = json .dumps (data ), timeout = timeout
110110 )
111111
112- def push_message (self , to , messages , notification_disabled = False , timeout = None ):
112+ def push_message (
113+ self , to , messages ,
114+ retry_key = None , notification_disabled = False , timeout = None ):
113115 """Call push message API.
114116
115117 https://developers.line.biz/en/reference/messaging-api/#send-push-message
@@ -121,6 +123,7 @@ def push_message(self, to, messages, notification_disabled=False, timeout=None):
121123 Max: 5
122124 :type messages: T <= :py:class:`linebot.models.send_messages.SendMessage` |
123125 list[T <= :py:class:`linebot.models.send_messages.SendMessage`]
126+ :param retry_key: (optional) Arbitrarily generated UUID in hexadecimal notation.
124127 :param bool notification_disabled: (optional) True to disable push notification
125128 when the message is sent. The default value is False.
126129 :param timeout: (optional) How long to wait for the server
@@ -132,6 +135,9 @@ def push_message(self, to, messages, notification_disabled=False, timeout=None):
132135 if not isinstance (messages , (list , tuple )):
133136 messages = [messages ]
134137
138+ if retry_key :
139+ self .headers ['X-Line-Retry-Key' ] = retry_key
140+
135141 data = {
136142 'to' : to ,
137143 'messages' : [message .as_json_dict () for message in messages ],
@@ -142,7 +148,7 @@ def push_message(self, to, messages, notification_disabled=False, timeout=None):
142148 '/v2/bot/message/push' , data = json .dumps (data ), timeout = timeout
143149 )
144150
145- def multicast (self , to , messages , notification_disabled = False , timeout = None ):
151+ def multicast (self , to , messages , retry_key = None , notification_disabled = False , timeout = None ):
146152 """Call multicast API.
147153
148154 https://developers.line.biz/en/reference/messaging-api/#send-multicast-message
@@ -157,6 +163,7 @@ def multicast(self, to, messages, notification_disabled=False, timeout=None):
157163 Max: 5
158164 :type messages: T <= :py:class:`linebot.models.send_messages.SendMessage` |
159165 list[T <= :py:class:`linebot.models.send_messages.SendMessage`]
166+ :param retry_key: (optional) Arbitrarily generated UUID in hexadecimal notation.
160167 :param bool notification_disabled: (optional) True to disable push notification
161168 when the message is sent. The default value is False.
162169 :param timeout: (optional) How long to wait for the server
@@ -168,6 +175,9 @@ def multicast(self, to, messages, notification_disabled=False, timeout=None):
168175 if not isinstance (messages , (list , tuple )):
169176 messages = [messages ]
170177
178+ if retry_key :
179+ self .headers ['X-Line-Retry-Key' ] = retry_key
180+
171181 data = {
172182 'to' : to ,
173183 'messages' : [message .as_json_dict () for message in messages ],
@@ -178,7 +188,7 @@ def multicast(self, to, messages, notification_disabled=False, timeout=None):
178188 '/v2/bot/message/multicast' , data = json .dumps (data ), timeout = timeout
179189 )
180190
181- def broadcast (self , messages , notification_disabled = False , timeout = None ):
191+ def broadcast (self , messages , retry_key = None , notification_disabled = False , timeout = None ):
182192 """Call broadcast API.
183193
184194 https://developers.line.biz/en/reference/messaging-api/#send-broadcast-message
@@ -189,6 +199,7 @@ def broadcast(self, messages, notification_disabled=False, timeout=None):
189199 Max: 5
190200 :type messages: T <= :py:class:`linebot.models.send_messages.SendMessage` |
191201 list[T <= :py:class:`linebot.models.send_messages.SendMessage`]
202+ :param retry_key: (optional) Arbitrarily generated UUID in hexadecimal notation.
192203 :param bool notification_disabled: (optional) True to disable push notification
193204 when the message is sent. The default value is False.
194205 :param timeout: (optional) How long to wait for the server
@@ -201,6 +212,9 @@ def broadcast(self, messages, notification_disabled=False, timeout=None):
201212 if not isinstance (messages , (list , tuple )):
202213 messages = [messages ]
203214
215+ if retry_key :
216+ self .headers ['X-Line-Retry-Key' ] = retry_key
217+
204218 data = {
205219 'messages' : [message .as_json_dict () for message in messages ],
206220 'notificationDisabled' : notification_disabled ,
@@ -212,7 +226,9 @@ def broadcast(self, messages, notification_disabled=False, timeout=None):
212226
213227 return BroadcastResponse (request_id = response .headers .get ('X-Line-Request-Id' ))
214228
215- def narrowcast (self , messages , recipient = None , filter = None , limit = None , timeout = None ):
229+ def narrowcast (
230+ self , messages ,
231+ retry_key = None , recipient = None , filter = None , limit = None , timeout = None ):
216232 """Call narrowcast API.
217233
218234 https://developers.line.biz/en/reference/messaging-api/#send-narrowcast-message
@@ -224,6 +240,7 @@ def narrowcast(self, messages, recipient=None, filter=None, limit=None, timeout=
224240 Max: 5
225241 :type messages: T <= :py:class:`linebot.models.send_messages.SendMessage` |
226242 list[T <= :py:class:`linebot.models.send_messages.SendMessage`]
243+ :param retry_key: (optional) Arbitrarily generated UUID in hexadecimal notation.
227244 :param recipient: audience object of recipient
228245 :type recipient: T <= :py:class:`linebot.models.recipient.AudienceRecipient`
229246 :param filter: demographic filter of recipient
@@ -240,6 +257,9 @@ def narrowcast(self, messages, recipient=None, filter=None, limit=None, timeout=
240257 if not isinstance (messages , (list , tuple )):
241258 messages = [messages ]
242259
260+ if retry_key :
261+ self .headers ['X-Line-Retry-Key' ] = retry_key
262+
243263 data = {
244264 'messages' : [message .as_json_dict () for message in messages ],
245265 'recipient' : recipient .as_json_dict (),
@@ -1156,5 +1176,6 @@ def __check_error(response):
11561176 status_code = response .status_code ,
11571177 headers = dict (response .headers .items ()),
11581178 request_id = response .headers .get ('X-Line-Request-Id' ),
1179+ accepted_request_id = response .headers .get ('X-Line-Accepted-Request-Id' ),
11591180 error = Error .new_from_json_dict (response .json )
11601181 )
0 commit comments