Marcelo Jabali, Author at Symbl.ai https://symbl.ai/developers/blog/author/marcelo-jabali/ LLM for Conversation Data Mon, 18 Jul 2022 14:13:42 +0000 en-US hourly 1 https://symbl.ai/wp-content/uploads/2020/07/favicon-150x150.png Marcelo Jabali, Author at Symbl.ai https://symbl.ai/developers/blog/author/marcelo-jabali/ 32 32 How to Add Real-Time Conversation Intelligence to Agora.io Android Apps with the Symbl.ai Extension https://symbl.ai/developers/blog/how-to-add-real-time-conversation-intelligence-to-agora-io-android-apps-with-the-symbl-ai-extension/ Mon, 04 Apr 2022 01:44:59 +0000 https://blog.symbl.ai/?p=15945 Symbl.ai partners with Agora.io to provide developers with new ways to augment their existing Real-Time Engagements. In terms of Agora.io’s Extension Marketplace, Symbl.ai enables those who activate Symbl.ai’s Extension to add features for Conversation Intelligence (CIf)  directly within their Android mobile applications. Symbl.ai has released its Extension in Agora.io’s Extension Marketplace and has released a […]

The post How to Add Real-Time Conversation Intelligence to Agora.io Android Apps with the Symbl.ai Extension appeared first on Symbl.ai.

]]>
Symbl.ai partners with Agora.io to provide developers with new ways to augment their existing Real-Time Engagements. In terms of Agora.io’s Extension Marketplace, Symbl.ai enables those who activate Symbl.ai’s Extension to add features for Conversation Intelligence (CIf)  directly within their Android mobile applications.

Symbl.ai has released its Extension in Agora.io’s Extension Marketplace and has released a sample Android mobile app. The Android sample app is designed to enable Symbl.ai’s CI features in an Agora.io Video SDK at version 4 or higher. The features enabled already in Symbl.ai’s Extension are: Transcription, Action Items, Questions, Follow Ups, Topics, Trackers, and, last but not least, live captions. It means that on top of Agora.io’s voice, video, or text capabilities, you now have Symbl.ai’s CI features right out of the box. The sample app is designed to showcase the joint capabilities of both Symbl.ai’s Extension within an Agora.io video calling app on Android.

To get up and running with Symbl.ai’s Extension inside of its sample Android app for real-time CI, these are a few steps you have to take.

Symbl.ai’s Extension in Android App with Agora.io 

1. Navigate to Agora.io’s console where you can sign up for a free developer account. Create a new project by clicking on the the Create button under Project Management.

2. Provide the name, use case and security mechanism for your project.

Click the Config button under the Action column next to your recently created project.

3. Turn the Primary Certificate toggle on and click the Generate temp RTC token button.

4. Provide a Channel Name and click the Generate Temp Token button. Copy the APP ID, Channel Name and Temp Token

You are going to update the sample mobile app configuration with the agora_customer_app_id (APP ID) and agora_token_value (Temp Token) below. The Channel Name is going to be used while you are running the mobile app on your device.

5. After setting up your project, head over to the Extensions Marketplace and select the Symbl.ai Conversation Intelligence card.

6. Scroll down and click the Activate button to activate the extension and retrieve the required Symbl.ai credentials.

7. With the Symb.ail extension activated, click the View button to retrieve the credentials.

Copy the API Key and API Secret values and then click Finish. You are going to update the sample mobile app configuration with the symbl_app_id (API Key) and the symbl_app_secret (API Secret) values below.

8. Next, you are going to clone or download the sample Android app from the following repo: https://github.com/symblai/symbl-agora-Android-app

9. Load the sample mobile app source code in Android Studio and navigate to the strings.xml file (which is a reference file Android provides automatically under app/res/values) where you will find variables with the following names:  symbl_app_id, symbl_app_secret, agora_customer_app_id, agora_token_value. Add the values of the variables you have copied from the previous steps.

Build the App

The next step is to build the project. With your configuration set up for both Agora.io and Symbl.ai, your next step is to build the .apk.

  1. In this step, you will build the app using Android Studio. Navigate to Build -> Make Project. It will download all of the dependencies listed in the build.gradle, all of which are preloaded into the sample app.
  2. After building the .apk, you deploy the app directly to your Android device in the Run/Debug list of available devices. Make sure to run your app on an Android phone rather than the emulator. Android Studio’s emulator does not emulate the same level of access to hardware such as the camera or the microphone as do actual phones so it’s recommended to deploy and run the app directly on a real device.

With the app added to your phone, join or create an Agora.io room to begin making or receiving calls.

Running the App

Here are a few screenshot examples of the App up and running… After the app launches, the first screen you see is a Join Room screen. In the upper right hand corner of the Join Room screen, there is a button for accessing the Preferences. It is indicated by the red arrow.

After clicking on the three dots at the top of the Join Room screen, you navigate to the Preferences screen. In the Preferences screen there are prompts for username, email, a prompt for selecting a Trackers API’s list of tracked words, a prompt for a redaction string. In the screen for Preferences below, hitting the Save button brings you right back to the Join Room / Create Room screen.

With your preferences already set, tap the Create button to continue.

Use the Channel Name value you set up in the Temp Token Generation step as the Room Name and tap Create Room.

After you have created or joined a room, live captioning begins immediately as you can see in the example below.

If you would like to see the other Symbl.ai Conversation Intelligence capabilities added to this sample mobile app that go beyond live captioning, swipe right. On that screen you see a tab view controller. The first tab shows the meeting Transcripts.

The next tab is Insights. Insights contain questions, action-items, and follow-ups, captured during the call.

The next tab is the Topics. Topics are key drivers of the conversation. They are the most important keywords or phrases used.

The final tab is for the Trackers. It is only viewable by the host of the meeting. Trackers are user-defined entities that allow you to track the occurrences of any characteristics or events in a conversation with just a few examples.

Community

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

If you would like to set the app up for production, Agora.io has a number of resources like docs or tutorials on how to set up a token server, even ones specifically geared towards Android.

The post How to Add Real-Time Conversation Intelligence to Agora.io Android Apps with the Symbl.ai Extension appeared first on Symbl.ai.

]]>
Automating the Sales Process with Symbl.ai, Pipedream, and Zoom https://symbl.ai/developers/blog/automating-the-sales-process-with-symbl-ai-pipedream-and-zoom/ Tue, 16 Nov 2021 05:41:21 +0000 https://blog.symbl.ai/?p=15674 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 […]

The post Automating the Sales Process with Symbl.ai, Pipedream, and Zoom appeared first on Symbl.ai.

]]>
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": {developer@symbl.ai},
             "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": {developer@symbl.ai},
             "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": {developer@symbl.ai},
             "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": {developer@symbl.ai},
             "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": {developer@symbl.ai},
             "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": {developer@symbl.ai},
             "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": {developer@symbl.ai},
             "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 developer@symbl.ai, join our Slack channels, participate in our hackathons, fork our Postman public workspace, or git clone our repos at Symbl.ai’s GitHub.

The post Automating the Sales Process with Symbl.ai, Pipedream, and Zoom appeared first on Symbl.ai.

]]>