Software /
code /
prosody-modules
Comparison
mod_slack_webhooks/mod_slack_webhooks.lua @ 4560:724003f24308
Back out 82689acd1294 (non-standard buttons)
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 21 May 2021 20:58:10 +0200 |
parent | 3443:284d8c18060e |
child | 4561:c6b740ccf6ec |
comparison
equal
deleted
inserted
replaced
4559:33b1b6ff23d8 | 4560:724003f24308 |
---|---|
19 local get_room_from_jid = rawget(mod_muc, "get_room_from_jid") or | 19 local get_room_from_jid = rawget(mod_muc, "get_room_from_jid") or |
20 function (room_jid) | 20 function (room_jid) |
21 return rooms[room_jid]; | 21 return rooms[room_jid]; |
22 end | 22 end |
23 | 23 |
24 local button_ns = "xmpp:prosody.im/community/mod_slack_webhooks#buttons"; | |
25 local routing = module:get_option("outgoing_webhook_routing") or {}; | 24 local routing = module:get_option("outgoing_webhook_routing") or {}; |
26 local listen_path = module:get_option("incoming_webhook_path") or "/webhook"; | 25 local listen_path = module:get_option("incoming_webhook_path") or "/webhook"; |
27 local default_from_nick = module:get_option("incoming_webhook_default_nick") or "Bot"; | 26 local default_from_nick = module:get_option("incoming_webhook_default_nick") or "Bot"; |
28 | 27 |
29 function postcallback(_, code) | 28 function postcallback(_, code) |
54 timestamp = now(), | 53 timestamp = now(), |
55 text = body, | 54 text = body, |
56 team_domain = from_host, | 55 team_domain = from_host, |
57 user_name = from_nick, | 56 user_name = from_nick, |
58 }; | 57 }; |
59 | |
60 local form = stanza:get_child("x", "jabber:x:form"); | |
61 if form and form.attr.type == "submit" then | |
62 local callback_id, button_name, button_value; | |
63 for field in form:childtags("field") do | |
64 if field.attr.var == "callback_id" then | |
65 button_name = field:get_child_text("text"); | |
66 elseif field.attr.var == "button_name" then | |
67 button_name = field:get_child_text("text"); | |
68 elseif field.attr.var ~= "FORM_TYPE" or field:get_child_text("text") ~= button_ns then | |
69 callback_id, button_name, button_value = nil, nil, nil; | |
70 break; | |
71 end | |
72 end | |
73 if callback_id and button_name and button_value then | |
74 json_out.callback_id = callback_id; | |
75 json_out.actions = { | |
76 { type = "button", name = button_name, value = button_value } | |
77 }; | |
78 end | |
79 end | |
80 | |
81 local stanzaid = stanza:get_child("id"); | 58 local stanzaid = stanza:get_child("id"); |
82 if stanzaid and string.sub(stanzaid,1,string.len("webhookbot"))=="webhookbot" then | 59 if stanzaid and string.sub(stanzaid,1,string.len("webhookbot"))=="webhookbot" then |
83 json_out["bot_id"] = "webhookbot"; | 60 json_out["bot_id"] = "webhookbot"; |
84 end | 61 end |
85 | 62 |
166 end | 143 end |
167 if button_name then | 144 if button_name then |
168 message:add_direct_child(dataform.new({ | 145 message:add_direct_child(dataform.new({ |
169 { | 146 { |
170 type = "hidden", name = "FORM_TYPE", | 147 type = "hidden", name = "FORM_TYPE", |
171 value = button_ns, | 148 value = "xmpp:prosody.im/community/mod_slack_webhooks#buttons", |
172 }, | 149 }, |
173 { | 150 { |
174 type = "hidden", name = "callback_id", | 151 type = "hidden", name = "callback_id", |
175 value = attachment.callback_id, | 152 value = attachment.callback_id, |
176 }, | 153 }, |