Introduction

In sales, like any other area, there are several processes that can be automated to free up a good part of your day. Imagine that you just finished a sales call with one of your prospects and now you have to download and review the meeting recording, summarize your meeting notes, prepare your follow-up and action items, put everything together, and finally send an email to the attendees. That takes time off of your day and a considerable amount of effort. Rest assured that you are not the only one in this position. Automating this process is probably one of the most relevant things to do if you are a sales professional, after all, you can’t waste your day with time-consuming, repetitive tasks.

A Simple Process Automation

Pipedream dashboard to create Zoom event source.
Authenticating Zoom account on Pipedream.
Stream Zoom recording to AWS S3.
AWS action S3 - Stream file to S3 from URL.
Authenticate AWS account to stream Zoom recording.

In this simple process automation, you are going to set up Pipedream to get notified every time you have a new Zoom meeting recording, upload the resulting video file (.mp4) to a public location, use the Symbl.ai APIs to analyze the meeting, build a summary UI, and finally send an email to the host of the meeting with all of the meeting information. 1. Log in to your Pipedream account and create a new Zoom event source. Follow the instructions here to do that. Authenticate your Zoom account and make any optional changes you might need. Click Create Source. 2. Add another step in your workflow to stream the Zoom recording to AWS S3. In your Pipedream workflow, click on the “+” sign to add a new step. In the search box, type “AWS”. Click on the AWS option and then select “S3 – Stream file to S3 from URL” Authenticate your AWS account and provide the required parameters including the File URL (use the download_url_with_token from Zoom steps.trigger step), the S3 Bucket Name and the S3 Key (file name) to be used for the upload. 3. As the process continues from here, generate a Webhook to trigger the Symbl API automation (input S3 URL, meeting name, host email).

Adding Symbl.ai to the Sales Automation Process

Programming Pipedream automation to authenticate with Node.js.

4. Generate Symbl API Token Authenticating with Symbl.ai’s API Token on the Pipedream platform is a seamless user experience. The first step to authenticating is to sign up on Symbl.ai’s platform, a platform augmented for developing onboarding (i.e., SSO, API Playgrounds, Streaming API Logs or API Usage dashboards). After signing up on the platform (i.e., https://platform.symbl.ai/#/login), the next step is to fetch both your Symbl.ai `appSecret` and `appId` keys. The next step is to save your Symbl.ai authentication credentials as part of your Pipedream environment variables. Navigate from your Pipedream account to Settings > Environment Variables > NEW ENVIRONMENT VARIABLE. Save your Symbl.ai `appId` as SYMBL_APPID. Save your Symbl.ai `appSecret` as SYMBL_SECRET. Later you will access these variables as appId: process.env.SYMBL_APPID, appSecret: process.env.SYMBL_SECRET respectively, since the Pipedream Environment Variables are accessible as process.env.ENVIRONMENT_VARIABLE_NAME. With your environment variables set up, your next step is to program your Pipedream automation to authenticate with Node.js. You program your POST request to Symbl.ai’s /authentication API endpoint with Node.js. The first step in that process is to navigate from the Plus Sign > Add a step > Run Node.js code: After selecting the Run Node.js code button, you will see a boilerplate code snippet appear:

async (event, steps) => {     // const axios = require ('axios') }

The code snippet is an async Node.js function that triggers all other functions programmed inside of the snippet. Inside of that snippet, the next step is to configure the POST request to Symbl.ai’s /authentication endpoint with the following code:

const symblToken = async () => {  const data = {    type: "application"    appId: process.env.SYMBL_APPID,    appSecret: process.env.SYMBL_SECRET  }  try {    const response = await axios({      method: 'POST' ,      url: 'https://api.symbl.ai/oauth2/token:generate',      headers: {'Content-Type': 'application/json'},      data: data    })    return response.data.accessToken  } catch (error) {    console.log(error)  } }

You call your function on the /authentication API much later (i.e., const token = await symblToken()) when you POST a request to Symbl.ai’s API endpoint for processing URLs to videos  https://api.symbl.ai/v1/process/video/url. After having configured your POST request, your next step is to configure a code snippet that takes the saved result of your call to the /authentication as a parameter in a function call to a new POST request for processing the video URL. 5. Submit the Video recording through the Async URL API (https://docs.symbl.ai/docs/async-api/overview/video/post-video) specifying the URL from #3 The next step is to take the url from your step in  #3 along with the token from #4 as parameters in a function call for processing the Zoom video from the AWS S3 bucket URL.

const pushVideoUrl = async (url, token) => {  const data = {    name: name,    url: url,    webhookUrl: ''  }    try {    const response = await axios({      method: 'POST',      url: 'https://api.symbl.ai/v1/process/video/url',      headers: {        'Content-Type': 'application/json',        Authorization: `Bearer ${token}`      },      data: data    })      return response.data  } catch (error) {    console.log(error)  } }  

The next step is to set up the constants for storing the function calls for both the token as well as the request to process the URL for the recorded Zoom call.

//Submit Job const token = await symblToken() const job = await pushVideoUrl(url, token) console.log(job)  

The final code snippet should look like the following:

asyc (event, steps) => const axios = require('axios') const url = event.body.url // need to update based on trigger console.log(url) const name = event.body.name const email = event.body.email   // Authenticate with Symbl.ai's authentication endpoint const symblToken = async () => {  const data = {    type: "application",    appId: process.env.SYMBL_APPID,    appSecret: process.env.SYMBL_SECRET  }  try {    const response = await axios({      method: 'POST' ,      url: 'https://api.symbl.ai/oauth2/token:generate',      headers: {'Content-Type': 'application/json'},      data: data    })    return response.data.accessToken  } catch (error) {    console.log(error)  } } // Submit video for processing const pushVideoUrl = async (url, token) => {  const data = {    name: name,    url: url,    webhookUrl: 'https://end8cktch543bcx.m.pipedream.net'  // url for next workflow (experience & summary API)  }    try {    const response = await axios({      method: 'POST',      url: 'https://api.symbl.ai/v1/process/video/url',      headers: {        'Content-Type': 'application/json',        Authorization: `Bearer ${token}`      },      data: data    })      return response.data  } catch (error) {    console.log(error)  } }   //Submit Job const token = await symblToken() const job = await pushVideoUrl(url, token) console.log(job)   //Store job data $send.sql({      table: 'zoom_automation',      payload: {        conversationId: job.conversationId,        jobId: job.jobId,        videoUrl: url,        name: name,        email: email      } }) }

After having obtained your Symbl.ai conversation ID, you are now in a position to download, review, or iterate on the transcripts you generated automatically through your integrated sales pipeline with Zoom, AWS, Symbl.ai and Pipedream!

Transcripts

To take a look at your transcripts, you can use either Postman or curl: curl –location –request GET ‘https://api.symbl.ai/v1/conversations/{{conversation_id}}’ –header ‘x-api-key;’

Sample Return Data

After you made a GET request to the /conversations API endpoint, the API returns the transcripts in the following format:

{
"messages": [
         {
             "id": "4678204045393920",
             "text": "Hi, Symbl.ai is an API first company.",
             "from": {[email protected]},
             "startTime": "2021-11-18T17:58:28.689Z",
             "endTime": "2021-11-18T17:58:30.889Z",
             "conversationId": "5600281162153984",
             "phrases": []         },         {
             "id": "6677423476178944",
             "text": "Is AI a wonderful thing?",
             "from": {[email protected]},
             "startTime": "2021-11-18T17:58:30.989Z",
             "endTime": "2021-11-18T17:58:34.189Z",
             "conversationId": "5600281162153984",
             "phrases": []         },         {
             "id": "4976895599837184",
             "text": "It is. Symbl.ai is a great AI product.",
             "from": {[email protected]},
             "startTime": "2021-11-18T17:58:35.189Z",
             "endTime": "2021-11-18T17:58:39.389Z",
             "conversationId": "5600281162153984",
             "phrases": []         },         {
             "id": "5522717223682048",
             "text": "Is Symbl.ai a great product for post meeting summaries or summarizations?",
             "from": {[email protected]},
             "startTime": "2021-11-18T17:58:39.989Z",
             "endTime": "2021-11-18T17:58:45.289Z",
             "conversationId": "5600281162153984",
             "phrases": []         },         {
             "id": "5083519974899712",
             "text": "Yes, Symbl.ai leverages AI as a sales enablement tool.",
             "from": {[email protected]},
             "startTime": "2021-11-18T17:58:45.289Z",
             "endTime": "2021-11-18T17:58:51.289Z",
             "conversationId": "5600281162153984",
             "phrases": []         },         {
             "id": "4526127776268288",
             "text": "Isn't Symbl.ai a conversation intelligence API platform.",
             "from": {[email protected]},
             "startTime": "2021-11-18T17:58:51.289Z",
             "endTime": "2021-11-18T17:58:55.689Z",
             "conversationId": "5600281162153984",
             "phrases": [] 
         },
         {
             "id": "5506391381901312",
             "text": "Symbl.ai is an API platform specializing in Real-Time Communications or Real-Time Engagements.",
             "from": {[email protected]},
             "startTime": "2021-11-18T17:58:55.689Z",
             "endTime": "2021-11-18T17:59:09.489Z",
             "conversationId": "5600281162153984",
             "phrases": [] 
         } 
     ] 
 }

Moving Forward with Your Sales Process Automation Strategy

After you have integrated the steps from the above, your console.log function should provide you with the information you need to fetch your transcripts. With the meeting’s transcription, you are already well on the road to a sales process automation strategy for Zoom, AWS, Pipedream, and Symbl.ai that will succeed. Analyzing conversation data is one of the best things you can do with Symbl.ai. As demonstrated in this post by simply using the Async Video API (or potentially the Async Audio API). In addition to the Async Video API (or potentially the Async Audio API), many more of Symbl.ai’s APIs are designed to enable you to create a highly streamlined sales pipeline. These features are its Summary UI API, and the Summarization API, both of which enable you to further develop your post-meeting follow-up processes. Sign up for your free account today to discover more about how Symbl.ai can help in automating your sales process today.

Community

Symbl.ai‘s invites developers to reach out to us via email at [email protected], join our Slack channels, participate in our hackathons, fork our Postman public workspace, or git clone our repos at Symbl.ai’s GitHub.