Skip to content
This repository was archived by the owner on Jun 26, 2025. It is now read-only.

Commit 9e474b2

Browse files
treethoughtCam Sweeney
authored andcommitted
use method to add media response to existing response
1 parent 4e5b123 commit 9e474b2

File tree

2 files changed

+47
-46
lines changed

2 files changed

+47
-46
lines changed

flask_assistant/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
profile
2727
)
2828

29-
from flask_assistant.response import ask, tell, event, build_item, permission, sign_in, media_response
29+
from flask_assistant.response import ask, tell, event, build_item, permission, sign_in
3030
from flask_assistant.manager import Context
3131

3232
import flask_assistant.utils

flask_assistant/response.py

Lines changed: 46 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -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

201244
def 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

Comments
 (0)