I am working on an integration between Zoom and Slack to send messages depending on Zoom users joining/leaving specific meetings.
Currently, I have no problem receiving webhooks from Zoom in to Pipedream but have not been successful in connecting Pipedream to Slack. I am using the Slackbot integration within Pipedream and cannot receive anything on the Slack side. If there are any example workflows that I could work off of or frankly any help in regards would be greatly appreciated.
Hi @rdemry , are you seeing a specific error in Pipedream when you’re trying to use our Slack integration? If you’d like, feel free to click the Share button in the top-right of your workflow and share it with dylan@pipedream.com.
I put together an example workflow that implements the logic you describe. I chose the Zoom > Custom Events trigger and listened for the meeting.participant_joined and meeting.participant_left events, so my workflow should be triggered each time a user in my meeting either leaves or joins a meeting. You mentioned you had that part working, but I wanted to provide that context since it’s relevant for the variables I use in the rest of the workflow.
Next, the format_payload step formats the data I send in the Slack message. I provided docs to the Pipedream-specific features I use in that step, but it essentially creates messages like “dylan@example.com joined meeting”.
Finally, I use our Slack Send a Message action to send the message to Slack:
This expects the Text of the message, as well as the Channel you want to send the message to (e.g. #zoom). The message from the format_payload step is exposed at the variable steps.format_payload.message, and I can navigate the “object explorer” when I click on the Text param to select that value:
End-to-end, this should send a message to my desired Slack channel each time a participant joins / leaves a Zoom meeting. The Send a Message action lets you format a number of other things about the message (you can change the name of the bot that sends the message, or its icon, for example).
Let me know if that helps, or if you have any other questions.
Bear with me as I am not a pro by any means but my concerns with connecting Pipedream to Slack comes down to parsing the info over to Slack. Unfortunately, I was given a hard no to use the Slack API connector as our infosec team has concerned with a handful of permissions. As a potential alternative, I went ahead and used just the “Connect Slack Bot” option as that was permitted by the Slack admins.
Hopefully, this is of help explaining my situation. Let me know if there are any glaring issues with the workflow I shared with you. Additionally, if possible are permissions modifiable when using the “connect Slack” button?
I am really looking forward to getting this operational. I’d gladly hop on a call to further clarify my situation. Thanks so much!
Thanks for sharing the workflow and for clarifying. I noticed you’ve hit your daily invocations quota (that should reset in just a couple of hours, every day at midnight UTC), so the workflow is failing to run as a result (you may have seen that you can upgrade to our Professional Tier to lift that quota). I briefly lifted your invocations quota so we could see the error Slack returned and saw this:
An API error occurred: missing_scope
In the settings for your Slack app, you’ll need to visit the OAuth & Permissions section under the Features header, then scroll down to the Scopes section. Under, Bot Token Scopes, you’ll need to add the chat:write permission:
You’ll also need to make sure to add the app to any channel where you want to send messages. If you encounter other errors interacting with Slack’s API (or another API), you should see them appear just below the relevant step in Pipedream:
Slack’s docs can be pretty complex, but this section of their apps guide discusses scopes a bit more. The Slack team also offers relatively good support, if you have questions about the Slack app.
That did the trick! Thanks so much for the help. I plan to move our Pipedream account to the paid version now that we have connectivity (thank god!)
I do have some additional asks for this instance though. My hope is to filter out 99% of the data coming in so I can tailor it to a specific meeting ID. For context, I am receiving data of ALL meetings that occur on our domain and getting the notifications in Slack now (so that is working perfectly).
I put in the event.trigger of the specific meeting ID I am trying to parse over to Slack and am not having any luck narrowing down the info to just that specific meeting. You should still have access to the workflow if you could please take a look and see what I might be doing incorrectly.
I don’t believe Zoom has a mechanism to only send webhooks for a specific resource (like a meeting). However, you can include a filter step at the top of your workflow.
First, click the + button just below your trigger step and add a new Node.js code step. In your case, it looks like the meeting ID is sent by Zoom in the variable steps.trigger.event.body.payload.object.id, so you can check to see if the meeting matches your desired ID and call the $end() function on the workflow if the meeting doesn’t match the ID you’d like to process:
if (steps.trigger.event.body.payload.object.id !== "123") {
$end("Not a meeting we care about")
}
This will end the workflow immediately, at that first step, if the meeting ID doesn’t match. This still triggers a workflow invocation, but none of the rest of the logic runs for these events.
Excuse my belated follow-up. Just wanted to thank you for the assistance! I would not have gotten this workflow nailed down without your help. If you are ever in Santa Cruz/Aptos area I owe you a beverage.