@@ -197,6 +197,49 @@ def build_carousel(self, items=None):
197197 )
198198 return carousel
199199
200+ def add_media (self , url , name , description = None , icon_url = None , icon_alt = None ):
201+ """Adds a Media Card Response
202+
203+ Media responses let your Actions play audio content with a
204+ playback duration longer than the 240-second limit of SSML.
205+
206+ Can be included with ask and tell responses.
207+ If added to an `ask` response, suggestion chips
208+
209+ Arguments:
210+ url {str} -- Required. Url where the media is stored
211+ name {str} -- Name of media card.
212+
213+ Optional:
214+ description {str} -- A description of the item (default: {None})
215+ icon_url {str} -- Url of icon image
216+ icon_alt {str} -- Accessibility text for icon image
217+
218+ example usage:
219+
220+ resp = ask("Check out this tune")
221+ resp = resp.add_media(url, "Jazzy Tune")
222+ return resp_with_media.suggest("Next Song", "Done")
223+
224+
225+ """
226+ media_object = {"contentUrl" : url , "name" : name }
227+ if description :
228+ media_object ["description" ] = description
229+
230+ if icon_url :
231+ media_object ["largeImage" ] = {}
232+ media_object ["largeImage" ]["imageUri" ] = icon_url
233+ media_object ["largeImage" ]["accessibilityText" ] = icon_alt or name
234+
235+ self ._messages .append (
236+ {
237+ "platform" : "ACTIONS_ON_GOOGLE" ,
238+ "mediaContent" : {"mediaObjects" : [media_object ], "mediaType" : "AUDIO" ,},
239+ }
240+ )
241+ return self
242+
200243
201244def build_item (
202245 title , key = None , synonyms = None , description = None , img_url = None , alt_text = None
@@ -385,52 +428,10 @@ def __init__(self, reason=None):
385428 "intent" : "actions.intent.SIGN_IN" ,
386429 "data" : {
387430 "@type" : "type.googleapis.com/google.actions.v2.SignInValueSpec"
388- }
389- }
431+ },
432+ },
390433 }
391434 }
392435 }
393-
394436
395- # Media responses let your Actions play audio content with a
396- # playback duration longer than the 240-second limit of SSML.
397- class media_response (_Response ):
398- def __init__ (self , speech , url , description = None , name = None , icon_url = None , icon_accessibilityText = None ):
399- super (media_response ,self ).__init__ (speech )
400- self ._response = {
401- "payload" : {
402- "google" : {
403- "expectUserResponse" : False ,
404- "richResponse" : {
405- "items" : [
406- {
407- "simpleResponse" : {
408- "textToSpeech" : speech
409- }
410- },
411- {
412- "mediaResponse" : {
413- "mediaType" : "AUDIO" ,
414- "mediaObjects" : [
415- {
416- "contentUrl" : url
417- }
418- ]
419- }
420- }
421- ],
422- "suggestions" : []
423- }
424- }
425- },
426- "outputContexts" :[]
427- }
428- if description != None :
429- self ._response ["payload" ]["google" ]["richResponse" ]["items" ][1 ]["mediaResponse" ]["mediaObjects" ][0 ]["description" ]= description
430- if name != None :
431- self ._response ["payload" ]["google" ]["richResponse" ]["items" ][1 ]["mediaResponse" ]["mediaObjects" ][0 ]["name" ]= name
432- if icon_url != None :
433- self ._response ["payload" ]["google" ]["richResponse" ]["items" ][1 ]["mediaResponse" ]["mediaObjects" ][0 ]["icon" ]= {}
434- self ._response ["payload" ]["google" ]["richResponse" ]["items" ][1 ]["mediaResponse" ]["mediaObjects" ][0 ]["icon" ]["url" ]= icon_url
435- if icon_accessibilityText != None :
436- self ._response ["payload" ]["google" ]["richResponse" ]["items" ][1 ]["mediaResponse" ]["mediaObjects" ][0 ]["icon" ]["accessibilityText" ]= icon_accessibilityText
437+
0 commit comments