Commit Graph

146 Commits

Author SHA1 Message Date
Gabriel Grubba afc4540c03
FIX: adjust `full_url` method in `ChatIntegrationReferencePost` to return the correct URL (#220)
* FIX: adjust `full_url` method in `ChatIntegrationReferencePost` to return the correct URL

before it automation would fail because topic does not have `full_url` method

* DEV: remove logs
2024-09-18 05:37:52 -03:00
Gabriel Grubba 6e7917bd5e
FIX: revert chat-integration move to discourse-automation (#219)
* Reapply "FIX: revert chat-integration move to discourse-automation (#214)" (#218)

This reverts commit f15c0fddf3.

* DEV: added more logging to the plugin

* DEV: update error logging with `.inspect` for better debugging
2024-09-12 10:44:39 -03:00
Gabriel Grubba f15c0fddf3
Revert "FIX: revert chat-integration move to discourse-automation (#214)" (#218)
This reverts commit a1c8f4ee9d.
2024-09-11 10:43:10 -03:00
Gabriel Grubba 3f8b67d1c1
Feature: add chat integration reference post (#216)
* FEATURE: Add chat integration reference post

This class works similar to a post but it is not a post.

* DEV: change how `excerpt` method works

* feature: Add `send_chat_integration_message` scriptable

add `send_chat_integration_message` scriptable that uses the rules to send a message to the chat provider
add locale strings for the new scriptable
update `ChatIntegrationReferencePost` `excerpt` method
add tests for `ChatIntegrationReferencePost`

* DEV: Add `get_channel_by_name` to every provider

This makes using `trigger_notification` easier with every provider as well.

* DEV: Add `get_channel_name` to all providers

This method gets the name of the channel based on how the provider identifies it.
Updates channel_name in locales yaml
Adds migrate_tag_added_filter_to_all_providers.rb to move all existing rules to use Automation

* DEV: Add removal of old migration data

Update small action locales with strings from core

* DEV: solve review comments

* DEV: update test locale strings

* DEV: remove empty line to trigger lint

* DEV: lint applied

* DEV: Add tests for automation integration

* DEV: add rails logger for when automatio error occurs

* DEV: move migration to be SQL only

Update provider helper to use hashes instead of dot notation

* DEV: update migration with correct table names

* DEV: Update migrate_tag_added_filter_to_all_providers to use smaller SQL queries

Commented out migrate_tag_added_from_filter_to_automation.rb

* DEV: update comments in migration file

* DEV: update indentation in client.en.yml

* DEV: update with review comments

* Update spec/lib/discourse_chat_integration/chat_integration_reference_post_spec.rb

Co-authored-by: Jarek Radosz <jradosz@gmail.com>

* Update spec/lib/discourse_chat_integration/chat_integration_reference_post_spec.rb

Co-authored-by: Jarek Radosz <jradosz@gmail.com>

* Update spec/lib/discourse_chat_integration/chat_integration_reference_post_spec.rb

Co-authored-by: Jarek Radosz <jradosz@gmail.com>

* Update spec/integration/automation_spec.rb

Co-authored-by: Jarek Radosz <jradosz@gmail.com>

* Update lib/discourse_chat_integration/chat_integration_reference_post.rb

Co-authored-by: Jarek Radosz <jradosz@gmail.com>

* DEV: update specs with review comments

* DEV: update typos in tests

* DEV: inlined functions for getting channel name for provider in migration

---------

Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2024-09-11 10:42:52 -03:00
Gabriel Grubba a1c8f4ee9d
FIX: revert chat-integration move to discourse-automation (#214)
* FIX: revert chat-integration move to discourse-automation

this reverses the changes made in 57b460737c

without deleting the migration.

* Revert "DEV: removing create post for category and tag changes setting (#210)"

This reverts commit 35925c4dac.

* DEV: merge both chat-integration rules and automation rules
2024-08-27 16:24:07 -03:00
Benoit 6acdb1e918
FEATURE: Added Power Automate as a new provider (#204) 2024-08-19 16:16:27 +01:00
Gabriel Grubba 35925c4dac
DEV: removing create post for category and tag changes setting (#210) 2024-08-13 17:28:29 -03:00
Gabriel Grubba 57b460737c
FEATURE: add topic tags changed trigger to chat integration (#208)
* FEATURE: add topic tags changed trigger to chat integration

* FEATURE: add placeholder for reply to topic trigger

add description on how to use the placeholder

* DEV: Move slack message creation to provider

Add tests to new method

* FEATURE: add ${URL} to placeholder replacements and added tags link

If triggered when a topic tag is changed, message behavior will follow what user defined in message.

* DEV: Update tests with tags

* DEV: add post to topic for testing

* DEV: update test strings

* DEV: add early return for topic tags changed trigger

* DEV: move early return to use try/catch

* DEV: update `create_slack_message` to not send a tuple of values

* DEV: refactor method to be more readable

* FEATURE: add `${ADDED_AND_REMOVED}` for default texts

* DEV: Update typo in test

* DEV: Add tests to check when if `create_slack_message` raises an error

* DEV: Remove the `tag_added` from chat-integration filter

Added migration to handle the migration of the `tag_added` filter from the chat-integration plugin.

Only removed the logic from the plugin, data removal will happen in a future PR

* DEV: lint migration file

* DEV: update chat-integration to not show "tag_added" rules

* DEV: update added and missing tags logic

* DEV: update context variable name

* DEV: update migration to include `begin/rescue` block and added a list with available filters
2024-08-13 15:14:35 -03:00
Ted Johansson cbdac03a84
FIX: Add missing dummy translations for tests (#195)
This change copies the translations from the Slack provider to the dummy provider in the test so we're testing real values.
2024-05-24 20:14:03 +08:00
Ted Johansson f0275f1591
DEV: Promote channel error check to ProblemCheck (#190)
We're promoting problem checks to first class citizens in core. This migrates the problem check to the new API.

In the process of adding tests for this check, I discovered what seems like a mistake that likely means this check never worked until now. (See inline comment.)
2024-03-15 13:21:11 +08:00
Jarek Radosz 2b03d227fa
DEV: Update linting (#183) 2024-01-15 11:20:35 +00:00
Ted Johansson d1e9f00883
DEV: Update test setup to work with auto groups (#184)
We're updating core to change TL based access settings to be group based. This requires some updates of tests to work correctly. (The existing test setup gives false positives.)
2024-01-15 17:31:06 +08:00
Jarek Radosz 30ac835e1d
FIX: Form validation bugs, new modal api, glimmer (#182) 2023-12-11 20:00:34 +01:00
Mark VanLandingham 9647c7afc0
FIX: stop 'tag_added' rules from firing for normal posts (#165) 2023-04-21 07:30:03 -05:00
Mark VanLandingham 9332d77483
FEATURE: Trigger follow rules when category changes (#164) 2023-04-18 13:27:17 -05:00
Mark VanLandingham a92108b69b
FEATURE: New rule filter to send message when topic tags change (#162) 2023-04-06 06:55:47 -05:00
David Taylor 0522ad6414
FIX: Always use parent thread_ts for slack threads (#159)
Previously we were using the `ts` of the previous message we sent to the thread. While this did work under some situations, it's not recommended in the Slack API docs, and can lead to some unexpected behavior (e.g. when one of the threaded messages is deleted).

This commit updates our logic to always use Slack's returned `thread_ts`, which represents the thread's parent.
2023-01-26 12:18:48 +00:00
David Taylor 49956bf829
DEV: Introduce syntax_tree for ruby formatting (#149) 2022-12-29 13:31:05 +01:00
David Taylor 5047583d95
DEV: Bump rubocop-discourse (#141)
* DEV: Bump rubocop-discourse

* Fix rubocop violations
2022-10-03 21:36:52 +02:00
Martin Lim 4e73da8856
FEATURE: Introduce Guilded as a provider (#135)
Support for integration with https://www.guilded.gg/
2022-08-30 18:10:17 +01:00
Loïc Guitaut c68fde5d2b FIX: Don’t process commands when 'text' is missing
This patch concerns the Telegram integration. Currently, we always try
to process commands when we receive a hook from Telegram. To do so we
rely on the `text` parameters from a Telegram message but the
API documentation tells us this parameters is actually optional. It
means sometimes it’s not present in the payload we receive but we still
try to access it resulting in a crash.

This patch addresses the issue by simply returning early from the
`#process_command` method when `text` is missing from the payload since
we don’t have anything to process then.
2022-07-18 18:11:22 +02:00
Leonardo Mosquera fd6be34974
FIX: don't send nil user.name for MS Teams (#131)
Because Teams rejects the request for having a JSON `null` where a string is expected.
2022-06-16 17:12:56 +01:00
David Taylor 157f3e910d
FIX: Respect core settings when rendering user names/usernames (#129)
This commit centralizes 'display name' generation into a helper, and updates it to respect core preferences for `enable_names` and `prioritize_username_in_ux`.
2022-05-30 17:13:55 +01:00
David Taylor cd6e4a8b62
FEATURE: Allow `[quote]` to be disabled for slack transcripts (#120)
https://meta.discourse.org/t/222145
2022-04-01 13:49:34 +01:00
David Taylor d63477fec0
FIX: Use correct identifier in transcript thread hint (#115)
We were using the internal UID of the channel in the hint, which would then fail to match any 'channel' configs in Discourse (which use the human-friendly `#channel` format). This was causing automatic threading for transcripts to fail.
2022-03-21 16:03:23 +00:00
David Taylor cd5387c567
DEV: Fix flaky specs (#114) 2022-03-15 13:47:53 +00:00
David Taylor 20f0b1c6ce
DEV: Cache slack users list for 10 minutes (#113)
This should help to avoid Slack API rate limiting in very large slack communities
2022-03-15 13:32:28 +00:00
David Taylor 36087f3004
DEV: Update Discord webhook domain (#106)
discordapp.com is being deprecated and replaced with discord.com - https://github.com/discord/discord-api-docs/discussions/4510
2022-02-15 11:53:53 +00:00
David Taylor 6e7fa8ebd1
FIX: Store slack thread_ts on a per-channel basis (#95)
When notifications about a topic are posted to multiple slack channels, and the Discourse channels are configured to "thread" the notifications, each channel will have a different thread_id. Previously we were only storing a single slack thread id per Discourse topic. This commit fixes that logic, so that threads in different channels are tracked separately.
2021-12-02 14:29:06 +00:00
Mark VanLandingham a8b7e9631b
DEV: Move admin namespace (#87) 2021-08-26 08:52:53 -05:00
Mark VanLandingham a73f5da114
Rename DiscourseChat to DiscourseChatIntegration (#82) 2021-07-13 14:36:16 -05:00
David Taylor 610364ff6d
FEATURE: Add support for slack message shortcuts for transcripts (#68)
Once configured, this adds a new item to the context menu of slack messages. When clicked, the menu item will generate a transcript and present the user with a custom "Post to Discourse" modal. This provides the same functionality as the existing slash-command interface, but is much more user friendly.
2021-04-22 18:50:11 +01:00
David Taylor 08e6718722
FEATURE: Improve formatting for Slack transcript messages (#70)
- Fix multi-line code blocks
- Add strikethrough support
- Fix HTML entities inside code blocks
- Do not process formatting inside code blocks
- Ensure links are never created with no URL
- Replace - with _ in emoji names
2021-04-22 18:49:21 +01:00
David Taylor 4261814162
FIX: Improve error handling for slack transcript generation (#63)
- Stop using `break` in a block - it doesn't work. The failure here was hidden because it was within a `defer` block, so would not cause a server error
- Refactor the error handling so that the error is passed back to Slack and displayed to the user
- Return specific error messages for user / message-history / message errors
- Tidy up the SlackCommandController to make all non-requestable methods private
- Add a test to ensure error messages are passed correctly to Slack
2021-03-01 19:07:31 +00:00
David Taylor 13fea5b803
FEATURE: Google Chat integration (#57) 2021-01-26 20:33:03 +00:00
Mathieu Trudel-Lapierre 0c0e86b772
FEATURE: Add support for Webex Teams (#49) 2020-12-11 09:43:03 +00:00
David Taylor 1dc753771b
FIX: Update telegram webhook correctly and remove old code (#46)
The `site_setting_changed` event passes the setting name as a symbol, not a string. This commit also removes the backwards-compatible `site_setting_saved` event, which was deprecated in 2.3.0.
2020-11-02 16:58:29 +00:00
jjaffeux d483f4ae5a DEV: s/JSON.parse(response.body)/response.parsed_body 2020-09-25 20:47:30 +02:00
David Taylor fd51671991
DEV: Remove trailing whitespace 2020-08-14 19:24:05 +01:00
David Taylor bdca153a09
FIX: Send new topic Slack notifications to the correct thread
This applies when topics are created using the slack transcript feature, and there is a rule configured with filter=thread
2020-08-14 19:15:02 +01:00
Ahmed Gagan fa5ef22262
FEATURE: Support for Microsoft Teams webhooks (#42) 2020-07-29 17:20:02 +01:00
Robin Ward 509360e190 FIX: You can't return from a block, especially an async one 2020-06-26 11:52:00 -04:00
Michael K Johnson da9106127a
FEATURE: Enable optional support for threading slack posts (#38)
When creating a new Discourse post from slack with the `post` feature, record the
slack `ts` thread ID for the resulting topic post using an HTML comment to pass
the `ts` through.

When notifying slack of new Discourse posts, record the slack `ts` thread ID in
the post's topic if it has not yet been recorded. (Normally, this will be done
for the topic post, except where notifications are being posted for old topics
before this feature was created.)

Add a new rule filter `thread` which posts threaded responses to slack if there
is a `ts` recorded for the post topic.

Modify the `trigger_notifications` interface to enable other integrations to
implement similar functionality.

Present the `thread` rule in the help text and admin UI only for the slack
providers.

https://meta.discourse.org/t/optionally-threading-posts-to-parent-topic-in-slack-integration/150759
2020-06-15 16:45:25 +01:00
Tosin Sonuyi ccbc41428b
GroupMe added as Provider (#36)
* adds groupme configuration and relative

* first pass at groupme provider

* add group id site setting w/ english translation

* rework to use bots groupme api intstead of developer, no access tokens reqd

also should catch 404 response codes

* add strings to locale yml files for i18n

* better error handling for multi-bot case

* add channel param for separate Groupme instances, include name in errorbody

* bugfix for multi bot msg forwarding

this gives us the ability to treat diff groupme instances like slack channels, lots of people use them this way for better or worse. use case is certain category posts only go to a particular GM instance

* add spec for groupme provider

* fix channel param constraint

* specify channels by groupme name, not bot api token

* fix some linting issues w/ spacing

* newline and trailing space lint fixes
2020-05-11 15:10:37 -04:00
Jarek Radosz a3face98e9 DEV: Change specs to not rely on a trailing whitespace 2020-05-02 09:50:48 +02:00
Jarek Radosz 6b3eba27fa
DEV: Remove a duplicated `let` definition 2020-03-27 17:42:15 +01:00
Robin Ward a41abfbfd6 FIX: Rubocop 2020-02-19 14:16:39 -05:00
Joffrey JAFFEUX 6540d8b957 DEV: uses Discourse.redis instead of $redis 2019-12-03 10:45:32 +01:00
Robin Ward 82351a790c FIX: An error would be raised if fewer than "skip_messages" existed 2019-08-07 16:59:34 -04:00
James Nylen 5ca3652ba7 Use Slack display names instead of the "name" field (#29)
* Use Slack display names instead of the "name" field

The "name" field is the left-hand side of the email address in many
cases.  This information is not otherwise available so we shouldn't
expose it in forum posts.

* Fall back to real_name, add comments

* Store users as a hash

This should avoid a lot of O(n) lookups

* Format user mentions with the correct name also

* Fix the tests (first try)

* Fix the tests (second try); add a test for user mentions

* Fix the tests (third try)

* Empty commit to trigger Travis

* Fix the tests (fourth try)

* Fix the tests (fifth try)

* Change spaces to underscores

* Updates per feedback
2019-07-04 14:50:07 -04:00