44Cards and Buttons
55=================
66
7- Webex Teams supports `AdaptiveCards <https://www.adaptivecards.io/ >`_ to allow
7+ Webex supports `AdaptiveCards <https://www.adaptivecards.io/ >`_ to allow
88new levels of interactivity for bots and integrations. You can read more about
99how cards and buttons work `in the official guide <https://developer.webex.com/docs/api/guides/cards >`_.
1010
11- In this guide I want to cover the abstraction build into the webexteamssdk that
11+ In this guide I want to cover the abstraction built into the webexteamssdk that
1212lets you author adaptive cards in pure python without having to touch the
13- underlying json of a adaptive card.
13+ underlying JSON of an adaptive card.
14+
15+ Sending a card
16+ ==============
1417
1518Lets dive into a simple example that sends a card to a room
1619
1720.. code-block :: python
1821
1922 from webexteamssdk import WebexTeamsAPI
20- from webexteamssdk.cards.card import AdaptiveCard
21- from webexteamssdk.cards.inputs import Text, Number
22- from webexteamssdk.cards.components import TextBlock
23- from webexteamssdk.cards.actions import Submit
23+ from webexteamssdk.models. cards.card import AdaptiveCard
24+ from webexteamssdk.models. cards.inputs import Text, Number
25+ from webexteamssdk.models. cards.components import TextBlock
26+ from webexteamssdk.models. cards.actions import Submit
2427
2528 greeting = TextBlock(" Hey hello there! I am a adaptive card" )
2629 first_name = Text(' first_name' , placeholder = " First Name" )
@@ -33,7 +36,40 @@ Lets dive into a simple example that sends a card to a room
3336 api = WebexTeamsAPI()
3437 api.messages.create(text = " fallback" , roomId = " ..." , attachments = [card])
3538
36- The message we send with this code then looks like this in our Webex Teams
39+ The message we send with this code then looks like this in our Webex space
3740client:
3841
3942.. image :: ../images/cards_sample.png
43+
44+
45+ Processing a card action
46+ =======================
47+
48+ Adaptive card interactions are treated as "attachment actions". Once user interacts
49+ with your card and submits an action, your app will receive a webhook from Webex. You
50+ must `setup a webhook <api.rst#webhooks >`_ in advance with ``resource = "attachmentActions" ``
51+ and ``event = "created" ``.
52+
53+ Webhook payload will contain a JSON:
54+
55+ .. code-block :: json
56+
57+ {
58+ "resource" : " attachmentActions" ,
59+ "event" : " created" ,
60+ "data" : {
61+ "id" : " XYXYXY" ,
62+ "type" : " submit"
63+ }
64+ }
65+
66+ Extract attachment action ID from ``['data']['id'] `` and
67+ use `attachment_actions.get() <api.rst#attachment_actions >`_ to get full information
68+ about user action and any submitted data.
69+
70+ .. code-block :: python
71+
72+ action = api.attachment_actions.get(webhookJson[' data' ][' id' ])
73+
74+ first_name = action.inputs[' first_name' ]
75+ age = action.inputs[' age' ]
0 commit comments