A real-time transcription bot that integrates [Recall.ai](https://www.recall.ai/assemblyai) with [AssemblyAI](/content/site-root.html) to provide live transcription of Zoom meetings.

## Quickstart

```
# 1. Clone and install
git clone https://github.com/AssemblyAI/assemblyai-recallai-zoom-bot.git
cd assemblyai-recallai-zoom-bot
npm install

# 2. Run ngrok and copy the ngrok URL
# ngrok http 8000

# 3. Configure your .env file and edit it with your API keys and ngrok URL
cp .env.example .env

# 4a. Open a new terminal and run
# node webhook.js

# 4b. Open another terminal and run
# node zoomBot.js
```

## Prerequisites

- [Node.js](https://nodejs.org/en/) (v14 or higher)
- [ngrok](https://ngrok.com/) - [Installation guide](https://ngrok.com/download)
- Recall.ai API key with AssemblyAI configured

## Step-by-step

Follow this step-by-step guide to set up and run the transcription bot.

### Step 1: Get your API keys

**1.1 Choose your Recall.ai region and get your API Key:**

| Region                   | Dashboard                       | RECALL_REGION | 
|-------------------------|---------------------------------|----------------|
| US Pay-as-you-go       | [us-west-2.recall.ai](https://us-west-2.recall.ai/) | `us-west-2`   |
| US Monthly plan        | [us-east-1.recall.ai](https://us-east-1.recall.ai/) | `us-east-1`   |
| EU                      | [eu-central-1.recall.ai](https://eu-central-1.recall.ai/) | `eu-central-1`|
| Japan                   | [ap-northeast-1.recall.ai](https://ap-northeast-1.recall.ai/) | `ap-northeast-1`|

**1.2 Configure AssemblyAI in your Recall.ai dashboard:**

- Get an AssemblyAI API key from [assemblyai.com](/content/site-root.html)  
- In your Recall.ai dashboard (same region as step 1.1), navigate to the transcription providers section  
- Add your AssemblyAI API key to enable AssemblyAI as a transcript provider

This step is required for the bot to work with AssemblyAI transcription!

### Step 2: Clone the example repo and install dependencies

Open a new terminal and run the following commands:

```
git clone https://github.com/AssemblyAI/assemblyai-recallai-zoom-bot.git
cd assemblyai-recallai-zoom-bot
npm install
```

### Step 3: Configure environment

Set up your environment variables using the example `.env` file in the repo:

```
cp .env.example .env
```

Edit `.env` with your Recall values.

```
RECALL_API_KEY=your_recall_api_key
RECALL_REGION=us-west-2
```

Set `RECALL_REGION` according to your Recall region in Step 1.1

### Step 4: Start ngrok tunnel

In a new terminal, start ngrok to create a public URL for your webhook:

```
g ngrok http 8000
```

### Step 5: Update Webhook URL

Edit your `.env` file and set `WEBHOOK_URL` to your ngrok URL:

```
WEBHOOK_URL=https://abc123.ngrok.io
```

### Step 6: Start webhook server

In another terminal, start the webhook server (receives transcripts):

```
node webhook.js
```

### Step 7: Start the bot CLI

In another terminal, start the bot CLI (manages meeting connection):

```
node zoomBot.js
```

### Step 8: Join meeting and start transcription

Enter your Zoom meeting URL when prompted:

```
What is your meeting URL?: https://zoom.us/j/123456789
```

### Step 9: Stop transcription

To stop transcribing, type “STOP” to end transcription on your third terminal running `node zoomBot.js`:

```
Type "STOP" to end transcription: STOP
```

## Troubleshooting
### Environment Variable Errors
#### `RECALL_API_KEY not found in .env file`

Solution: Make sure you copied `.env.example` to `.env` and added your API key.

#### `RECALL_REGION must be one of: us-west-2, us-east-1, eu-central-1, ap-northeast-1`

Solution: Check your `.env` file and ensure `RECALL_REGION` matches where you got your API key.

### Common network issues
#### Timeout connecting to Recall.ai

Solution:
- Check your internet connection
- Verify your `RECALL_REGION` is correct
- Try again after a few seconds.
