Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add functions.completeError and functions.completeSuccess #1301

Conversation

yogasw
Copy link
Contributor

@yogasw yogasw commented Jul 14, 2024

this PR to handle event function_executed and response the function with functions.completeSuccess and functions.completeError

@yogasw yogasw mentioned this pull request Jul 14, 2024
@lorenzoaiello lorenzoaiello self-assigned this Jul 15, 2024
@lorenzoaiello lorenzoaiello added enhancement example about example codes RTM API about Real Time Messaging API SocketMode about SocketMode labels Jul 15, 2024
Copy link
Contributor

@lorenzoaiello lorenzoaiello left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for jumping on that issue so quickly @yogasw ! This looks like a great start, but I've left a few comments to double-check - I'm not super familiar with Slack functions so forgive me if I ask some extra questions to make sure I've understood things correctly. If you could also add some tests for both the inner_events and function_event files, I'd appreciate it!

Type string `json:"type"`
Name string `json:"name"`
Description string `json:"description"`
Title string `json:"title"`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe there is a IsRequired parameter in the OutputParameter returned in the Function Event based on the example event provided in the documentation.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i will update it

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

but why when I activate debug mode this value is not there?
https://gist.github.com/yogasw/65d68c081bfd5bea14520cedc907a979

}

// Function is a struct for functions in FunctionExecuted events
type Function struct {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where did you find the documentation for FormEnabled and DateReleased? I don't see it on the event documentation page.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I got it from the debug mode of the slack-go socket mode, because before that I had not found the official documentation
image
https://gist.github.com/yogasw/65d68c081bfd5bea14520cedc907a979

@@ -0,0 +1,83 @@
package slack
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please ensure that the WebAPI functions accept a context as the first function parameter and rename this FunctionCompleteErrorContext. You can create a second function called FunctionCompleteError that explicitly sets contact.Background() if you'd like.

You can look at ListEventAuthorizationsContext and ListEventAuthorizations for an example of how to implement it.

}

// FunctionCompleteSuccess indicates function is completed
func (api *Client) FunctionCompleteSuccess(functionExecutionId string, options ...FunctionCompleteSuccessRequestOption) error {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe the API method returns a customer_id, please add it as a function output to most closely mirror the published API specification.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The customer_id mentioned in the documentation you linked is purely an example. The output payload is required to mirror what is specified on the evnet.

@lorenzoaiello lorenzoaiello added missing test needs a test before merge feedback given When a review has been conducted and awaiting the response from the comitter(s) labels Jul 15, 2024
@lorenzoaiello lorenzoaiello removed their assignment Jul 29, 2024
Copy link

This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.

@github-actions github-actions bot added the stale label Sep 16, 2024
@zacharyabzg
Copy link

Hello wonderful contributors! We use this library at work for a project and we are up against the deadline for Workflow Builder deprecation. Currently we're trying to backport our legacy stuff to the new functions paradigm but this library only seems to currently support legacy workflows.

Do y'all have any idea if this will land before 09/26/24? Is there anything we can do to help? Thanks!

@gideonw
Copy link
Contributor

gideonw commented Sep 27, 2024

If this PR is updated to use the event types defined in #1306 it works as intended. I have merged the two in my fork and tested the changes with success.

@yogasw Do you need help with this PR? If so I can modify your changes in my fork and submit a separate PR.

@lorenzoaiello
Copy link
Contributor

Superseded by #1328

lorenzoaiello pushed a commit that referenced this pull request Oct 14, 2024
Completion of #1301

- Adds the new complete functions for the Function Execution Event
- Adds the context version of those methods

---
> this PR to handle event
[function_executed](https://api.slack.com/events/function_executed) and
response the function with
[functions.completeSuccess](https://api.slack.com/methods/functions.completeSuccess)
and
[functions.completeError](https://api.slack.com/methods/functions.completeError)

---------

Co-authored-by: Yoga Setiawan <[email protected]>
kelseymills added a commit to incident-io/slack that referenced this pull request Nov 7, 2024
* Add example of updating modal

* socketmode.Client.run: Fix slack-go#1125 by allowing producer of channel to close when it is finished, and consumer to see the close

* socketmode.Client.run: Fix small race potential on 'firstErr' as the outer goroutine did not wait on all inner goroutines that had a chance to set it, also make sure to check error for context.Canceled appropriately

* socketmode.Client.Events: Change all events produced to Events channel via a method that has an escape hatch; unable to change public Events field without breaking api, though

* socketmode.Client.run: Cover edge case where all goroutines exit nil, when getting buffered (first) error

* socketmode: Slight refactor of Send/Ack on Client to allow passing contexts for channel ops, though they are very similar now

* socketmode: Shore up error handling via errors.Is/As/(Un)Wrapping, other small changes

* delete dupulicated code at L181

* Change comments at L183 to suggestion

Co-authored-by: Naoki Kanatani <[email protected]>

* Change http response StatusUnauthorized at L188 to StatusInternalServerError

Co-authored-by: Naoki Kanatani <[email protected]>

* socketmode example: use embedded api client in socketmode client

* socketmode remove duplicate debug logging

* socketmode bytes no longer used

* socketmodehandler: implemented RunEventLoopContext method. now socketmodehandler will react on context cancellation

* socketmode: awaiting of message receiver goroutine in run method to avoid panics

* bugfix: silly mistake in runLoop method, renamed closed to ok (recv chan)

* Export the Binder type from slacktest

* Add ReplyUsers to Msg Struct

This is something that Slack returns by default on API response.

* add support for user_profile_changed callback event

* add test

* add 2FA type to slack user

Signed-off-by: Ivan Milchev <[email protected]>

* Remove omitempty

* Test with Go 1.18~1.20

* Update README for slacktest

* Add actions/stale action

* Increase operations-per-run

* Bump up golangci-lint and its action to latest

* Add git repository's checkout option

* Add setup-go step

* gofmt

* Add 'FIXME's for deadman timer reset race

* Fix race on deadman timer Elapsed+Reset by more efficient use of ticker and ping time channel. Remove deadman file as it is no longer needed

* Add UnfurlLinks and UnfurlMedia to WebhookMessage

* to support 'classic unfurl' configuration options in webhook messages.
* https://api.slack.com/reference/messaging/link-unfurling#classic_unfurl

* chore: unnecessary use of fmt.Sprintf

* Redact tokens in debug log

* Tiny unrelated lint fix

* Add support for refresh tokens

* Conversation inviteShared support

* Create structs for manifest endpoint

* Add requests to validate manifests

* Add create and delete methods, implement common interface

* Add tokens

* Finish manifest methods

* Fix linting

* Rename value

* More tests, return manifest itself when exporting

* Undo pointer and take reference manually

* More tests

* Add options for tokens

* Use correct method

* use config token

* Pass config token as param

* Small bugfix

* add `omitempty` to ConfirmationBlockObject.Deny

a

* change case "/humboldttest": to case "/slash" to handle http request correctly

* remove post message because it's not related to sample of updating modal

* add time.sleep to wait to see updated modal

* Add examples

* add time pkg

* Re-phrase example docs

* Add is_enterprise_install flag to command, interactions, and oauth2 response

* Add blocks in slackevents.MessageEvent

* Add support for Rich Text Input

* Add Video Block (slack-go#1210)

Add support for Video Blocks

Ref. https://api.slack.com/reference/block-kit/blocks#video

cf. slack-go#1205

---------

Co-authored-by: David Parsley <[email protected]>
Co-authored-by: Ben Bourdin <[email protected]>

* Add rich_text_input block conv

* Create openid.connect.token function to fetch access token

* Fix incorrectly commented functions

* Improved comment for GetOpenIDConnectToken

* Add RichTextList support

* Add support for Indent field

Co-authored-by: SimonLiuRoblox <[email protected]>

* Add block element type FileInput

* Add Files field related to FileInput element in the BlockAction

* add connected_team_ids, shared_team_ids, internal_team_ids, is_global_shared field to conversation

* fix: expose is_enterprise_install field

* Add "edited" field to the app mention event

* Fix linter

* Fix: always add context to errors during block serde

Signed-off-by: [email protected] <[email protected]>

* Add WithURL support for ButtonBlockElement

* add rich_text_quote and rich_text_preformatted

* add deleted timestamp for deleted msg events

* Adding structure comments & definitions

* Parse string or boolean for SlashCommand.IsEnterpriseInstall

* validate text length

* Add missing message option for link_names

* fix some typos

* ignore vendor

* bots.info

* chat.scheduledMessages.list

* files.list

* usergroups.create

* usergroups.list

* reactions.list

* search.all
search.files
search.messages

* team.accessLogs

* team.billableInfo

* team.profile.get

* pr-prep

* Fix UploadFileV2 when using text content (slack-go#1291)

* Trigger GitHub Actions

* chore: slice replace loop (slack-go#1211)

* chore: slice replace loop

* Trigger GitHub Actions

---------

Co-authored-by: Lorenzo Aiello <[email protected]>

* Add isReadOnly property to Conversation struct (slack-go#1232)

Co-authored-by: Miguel Campos <[email protected]>

* chore: make channel optional on `UploadFileV2` (slack-go#1293)

* Support no channel

* added test

* fix channel id param name

* chore: Adding Deprecation Notice for files.upload (slack-go#1300)

* ci: Adding Go Test Coverage for 1.21 and 1.22 (slack-go#1298)

* docs: Updating Inline Docs and API References (slack-go#1299)

* docs: Add an example demonstrating correct usage of GetUsersPaginated (slack-go#1201)

* Add an example demonstrating correct usage of GetUsersPaginated

* Requeue GitHub Actions

---------

Co-authored-by: Lorenzo Aiello <[email protected]>

* docs: Adding an example for AddRemoteFile and DeleteFile (slack-go#1303)

* docs: Adding an example for ConversationHistory (slack-go#1302)

* slackevents: support metadata in MessageEvent (slack-go#1307)

Support for receiving metadata when reading conversation history was
first added in PR slack-go#1083. This commit extends metadata support to message
events when connected to the Slack WebSocket API.

Signed-off-by: Robert Fratto <[email protected]>

* chore: replace ioutil with io or os package (slack-go#1310)

* add file access field to file struct for slackevents (slack-go#1312)

* Add slack_file to image block (slack-go#1311)

Co-authored-by: Rhys M <[email protected]>

* feat: Events api reconcilation (slack-go#1306)

* events added with test

* added events with tests

* added all events and changes done

* feat: Add support for parsing AppRateLimited events (slack-go#1308)

The code changes in this commit add support for parsing AppRateLimited events in the `ParseEvent` function. This allows the application to handle rate-limited events from the Slack API.

* feat: Add Properties.Canvas to Channel (slack-go#1228)

* Add Properties.Canvas to Channel

* Trigger GitHub Actions

---------

Co-authored-by: Lorenzo Aiello <[email protected]>

* fix: create multipart form when multipart request (slack-go#1117)

* fix: create multipart form when multipart request

* call createFormFields in go func()

del coment

* Trigger GitHub Actions

---------

Co-authored-by: Lorenzo Aiello <[email protected]>

* feat: Add go version 1.23 to test matrix (test.yml) (slack-go#1315)

* ci: Bump GitHub Actions to Latest Versions

* fix: fix deprecated comment for UploadFile and UploadFileContext (slack-go#1316)

* Support publishing a messge to a specific thread (slack-go#1309)

Support publishing a messge to a specific thread
https://api.slack.com/interactivity/handling#publishing_in_thread

From slack interactivity documentation:
Publishing responses in thread 
If you want to publish a message to a specific thread, you'll need to
include an attribute response_type and set its value to in_channel.
Then, to specify the thread, include a thread_ts.

Also, be sure to set replace_original to false or you'll overwrite the
message you're wanting to respond to!

* fix: Add required `format` field to rich text date blocks (slack-go#1317)

As per [block kit
docs](https://api.slack.com/reference/block-kit/blocks#date-element-type),
the date element requires a format string to be included. Currently,
submitting a block kit with this element results in a slack API error.

Also added the two optional fields `url` and `fallback` for posterity.

##### PR preparation
Run `make pr-prep` from the root of the repository to run formatting,
linting and tests.

##### Should this be an issue instead
- [ ] is it a convenience method? (no new functionality, streamlines
some use case)
- [ ] exposes a previously private type, const, method, etc.
- [ ] is it application specific (caching, retry logic, rate limiting,
etc)
- [ ] is it performance related.

##### API changes

Since API changes have to be maintained they undergo a more detailed
review and are more likely to require changes.

- no tests, if you're adding to the API include at least a single test
of the happy case.
- If you can accomplish your goal without changing the API, then do so.
- dependency changes. updates are okay. adding/removing need
justification.

###### Examples of API changes that do not meet guidelines:
- in library cache for users. caches are use case specific.
- Convenience methods for Sending Messages, update, post, ephemeral,
etc. consider opening an issue instead.

* fix: Updated RichTextInputBlockElement InitialValue data type (slack-go#1320)

##### Pull Request Guidelines

These are recommendations for pull requests.
They are strictly guidelines to help manage expectations.

##### PR preparation
Run `make pr-prep` from the root of the repository to run formatting,
linting and tests.

##### Should this be an issue instead
- [x] is it a convenience method? (no new functionality, streamlines
some use case)
- [ ] exposes a previously private type, const, method, etc.
- [ ] is it application specific (caching, retry logic, rate limiting,
etc)
- [ ] is it performance related.

Fix for [issue slack-go#1276](slack-go#1276)
Updated the datatype of RichTextInputBlockElement InitialValue from
string to *RichTextBlock

* feat: Add support for unicode parameter in emoji type of rich text blocks (slack-go#1319)

This PR adds support for the `unicode` parameter to the
`RichTextSectionEmojiElement` struct for rich text blocks. While this
parameter is not officially documented in Slack's API, it is present in
the JSON payload of actual Slack messages and represents the Unicode
code point of the emoji.
https://api.slack.com/reference/block-kit/blocks#emoji-element-type

For example, a rich text block with an emoji can include the unicode
field like this:

```json
"blocks": [
    {
      "type": "rich_text",
      "block_id": "xxxxx",
      "elements": [
        {
          "type": "rich_text_section",
          "elements": [
            {
              "type": "emoji",
              "name": "+1",
              "unicode": "1f44d"
            }
          ]
        }
      ]
    }
  ]
```

The unicode parameter behaves similarly to the skin-tone parameter,
which is also undocumented but has already been included in the
structure. This PR aligns the handling of unicode in the same way to
ensure emojis are fully supported in Slack message payloads.

Please review, and feel free to provide feedback if any adjustments are
needed. Thank you!



##### Pull Request Guidelines

These are recommendations for pull requests.
They are strictly guidelines to help manage expectations.

##### PR preparation
Run `make pr-prep` from the root of the repository to run formatting,
linting and tests.

##### Should this be an issue instead
- [ ] is it a convenience method? (no new functionality, streamlines
some use case)
- [ ] exposes a previously private type, const, method, etc.
- [ ] is it application specific (caching, retry logic, rate limiting,
etc)
- [ ] is it performance related.

##### API changes

Since API changes have to be maintained they undergo a more detailed
review and are more likely to require changes.

- no tests, if you're adding to the API include at least a single test
of the happy case.
- If you can accomplish your goal without changing the API, then do so.
- dependency changes. updates are okay. adding/removing need
justification.

###### Examples of API changes that do not meet guidelines:
- in library cache for users. caches are use case specific.
- Convenience methods for Sending Messages, update, post, ephemeral,
etc. consider opening an issue instead.

* Add endpoints for `calls.*` apis and `Type: call` in blockkit (slack-go#1190)

Implement the API methods for the Calls API in Slack
https://api.slack.com/apis/calls

Implemented methods
- `calls.add` - Indicate a new call has been started
- `calls.end` - Indicate to slack that the call has ended
- `calls.info` - Get information about an ongoing slack call object
- `calls.update` - update call information
- `calls.participants.add`
- `calls.participants.remove`

Additionally, I've added the minimal version of `Block{Type: "call",
CallID: string}` which slack recommends/requires be posted back to the
channel https://api.slack.com/apis/calls#post_to_channel.

All implemented functionality is publicly documented. There appear to be
additional attributes on the `type: call` block, however those appear to
be internal values for slack's rendering, so I have left them out. See
this gist for specific responses
https://gist.github.com/winston-stripe/0cac608bd63b42d73a352be53577f7fd

##### Pull Request Guidelines

These are recommendations for pull requests.
They are strictly guidelines to help manage expectations.

##### PR preparation
Run `make pr-prep` from the root of the repository to run formatting,
linting and tests.

##### Should this be an issue instead
- [ ] is it a convenience method? (no new functionality, streamlines
some use case)
- [ ] exposes a previously private type, const, method, etc.
- [ ] is it application specific (caching, retry logic, rate limiting,
etc)
- [ ] is it performance related.

##### API changes

Since API changes have to be maintained they undergo a more detailed
review and are more likely to require changes.

- no tests, if you're adding to the API include at least a single test
of the happy case.
- If you can accomplish your goal without changing the API, then do so.
- dependency changes. updates are okay. adding/removing need
justification.

###### Examples of API changes that do not meet guidelines:
- in library cache for users. caches are use case specific.
- Convenience methods for Sending Messages, update, post, ephemeral,
etc. consider opening an issue instead.

---------

Co-authored-by: Winston Durand <[email protected]>

* feat: Add Convenience Methods to Block Elements (slack-go#1279)

Adds some convenience methods to block elements to easily add
functionality

---------

Co-authored-by: Lorenzo Aiello <[email protected]>

* feat: Add functions.completeError and functions.completeSuccess (slack-go#1328)

Completion of slack-go#1301

- Adds the new complete functions for the Function Execution Event
- Adds the context version of those methods

---
> this PR to handle event
[function_executed](https://api.slack.com/events/function_executed) and
response the function with
[functions.completeSuccess](https://api.slack.com/methods/functions.completeSuccess)
and
[functions.completeError](https://api.slack.com/methods/functions.completeError)

---------

Co-authored-by: Yoga Setiawan <[email protected]>

* feat: Add support for external_limited option of inviteShared (slack-go#1330)

Expose the ability to override the [external_limited
option](https://api.slack.com/methods/conversations.inviteShared#arg_external_limited)
for inviteShared.

Adding the param to all the InviteSharedEmailsToConversation, etc.
methods would be a breaking change to those callers, so I opted instead
to expose the underlying helper (renamed to InviteSharedToConversation).

I feel like the convenience methods
(InviteSharedEmailsToConversation/InviteSharedUserIDsToConversation) are
not actually that much more convenient than just using the helper, and I
think we can eventually remove them in favor of having people call
InviteSharedToConversation directly. But that's a future thing.

Although it's slightly inconvenient for the caller to use *bool for
ExternalLimited, the two alternatives I considered are, I think worse:
- Include ExternalLimited as a bool in the InviteSharedParams. I dislike
this way because it gives the SDK user of InviteSharedToConversation a
different default behavior from inviteShared, since the default value in
the API is true.
- Add a bool like NonExternalLimited to InviteSharedParams. This way the
defaulting is consistent with the API if it's not specified; however,
the InviteSharedParams no longer mirror the API args, which I think is
confusing.

* feat: Add support for Canvas API methods (slack-go#1334)

This PR introduces new functionalities for managing canvases and
creating channel-specific canvases.

- CreateCanvas
- DeleteCanvas
- EditCanvas
- SetCanvasAccess
- DeleteCanvasAccess
- LookupCanvasSections
- CreateChannelCanvas

Closes slack-go#1333

* Add back a few things I removed from our version when merging

* Remove duplicate TeamID

* Fix tests

* Fix linting

* Implement interface for generic section

* Fix methods to generate new rich text types

* Implement set elements

* Revert rich text changes

* Delete unnecessary file

---------

Signed-off-by: Ivan Milchev <[email protected]>
Signed-off-by: [email protected] <[email protected]>
Signed-off-by: Robert Fratto <[email protected]>
Co-authored-by: kouwakai <[email protected]>
Co-authored-by: Ian Burton <[email protected]>
Co-authored-by: KouWakai <[email protected]>
Co-authored-by: Naoki Kanatani <[email protected]>
Co-authored-by: kittydoor <[email protected]>
Co-authored-by: lololozhkin <[email protected]>
Co-authored-by: lololozhkin <[email protected]>
Co-authored-by: Kevin Paulisse <[email protected]>
Co-authored-by: Aleksa Arsic <[email protected]>
Co-authored-by: Jeffrey Dorrycott <[email protected]>
Co-authored-by: Ivan Milchev <[email protected]>
Co-authored-by: Lauri Heiskanen <[email protected]>
Co-authored-by: guoguangwu <[email protected]>
Co-authored-by: Daniel Abraham <[email protected]>
Co-authored-by: Barak Amar <[email protected]>
Co-authored-by: stijndcl <[email protected]>
Co-authored-by: Kamil Gwóźdź <[email protected]>
Co-authored-by: David Parsley <[email protected]>
Co-authored-by: Hussachai Puripunpinyo <[email protected]>
Co-authored-by: invzhi <[email protected]>
Co-authored-by: Peiman Jafari <[email protected]>
Co-authored-by: walkure <[email protected]>
Co-authored-by: David Parsley <[email protected]>
Co-authored-by: Ben Bourdin <[email protected]>
Co-authored-by: Daniel Michaels <[email protected]>
Co-authored-by: Daniel Pieper <[email protected]>
Co-authored-by: Daniel Pieper <[email protected]>
Co-authored-by: SimonLiuRoblox <[email protected]>
Co-authored-by: Aotokitsuruya <[email protected]>
Co-authored-by: Peter Nguyen <[email protected]>
Co-authored-by: Alvin See <[email protected]>
Co-authored-by: IbirbyZh <[email protected]>
Co-authored-by: [email protected] <[email protected]>
Co-authored-by: Josh Branham <[email protected]>
Co-authored-by: Rustam Gilyazov <[email protected]>
Co-authored-by: Jeremy Birtola <[email protected]>
Co-authored-by: Andres Peñaloza <[email protected]>
Co-authored-by: Robby Dyer <[email protected]>
Co-authored-by: yutasb <[email protected]>
Co-authored-by: candiduslynx <[email protected]>
Co-authored-by: Alex Shcherbakov <[email protected]>
Co-authored-by: Caleb McKay <[email protected]>
Co-authored-by: Lorenzo Aiello <[email protected]>
Co-authored-by: Lorenzo Aiello <[email protected]>
Co-authored-by: Miguel Campos <[email protected]>
Co-authored-by: Miguel Campos <[email protected]>
Co-authored-by: Alexander Forbes-Reed <[email protected]>
Co-authored-by: Adam Rothman <[email protected]>
Co-authored-by: Robert Fratto <[email protected]>
Co-authored-by: Naka Masato <[email protected]>
Co-authored-by: Peter Nguyen <[email protected]>
Co-authored-by: rhysm <[email protected]>
Co-authored-by: Rhys M <[email protected]>
Co-authored-by: Arya Khochare <[email protected]>
Co-authored-by: K.Utsunomiya <[email protected]>
Co-authored-by: ku KUMAGAI <[email protected]>
Co-authored-by: mineo <[email protected]>
Co-authored-by: ICHINOSE Shogo <[email protected]>
Co-authored-by: Nikolai <[email protected]>
Co-authored-by: Luke Josh <[email protected]>
Co-authored-by: Manjish <[email protected]>
Co-authored-by: YutoKashiwagi <[email protected]>
Co-authored-by: Winston Durand <[email protected]>
Co-authored-by: Winston Durand <[email protected]>
Co-authored-by: Obed S. <[email protected]>
Co-authored-by: Gideon Williams <[email protected]>
Co-authored-by: Yoga Setiawan <[email protected]>
Co-authored-by: Bennett Amodio <[email protected]>
Co-authored-by: Jaro Spisak <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement example about example codes feedback given When a review has been conducted and awaiting the response from the comitter(s) missing test needs a test before merge RTM API about Real Time Messaging API SocketMode about SocketMode
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants