0% found this document useful (0 votes)
27 views22 pages

Zoom

The document outlines the implementation details and issues related to a Zoom bot, including environment variables, Docker configurations, and critical issues identified in the code. It highlights potential causes for segmentation faults, such as race conditions and memory access issues, along with violations of SOLID principles. Additionally, it discusses the handling of audio data and the integration with Google Cloud services for processing audio files.

Uploaded by

Apu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views22 pages

Zoom

The document outlines the implementation details and issues related to a Zoom bot, including environment variables, Docker configurations, and critical issues identified in the code. It highlights potential causes for segmentation faults, such as race conditions and memory access issues, along with violations of SOLID principles. Additionally, it discusses the handling of audio data and the integration with Google Cloud services for processing audio files.

Uploaded by

Apu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 22

Zoom

//used to listen to callbacks from meeting related matters


#include "MeetingServiceEventListener.h"

[INFO] Created:

- /app/demo/upload//c8c97b17-2c26-4eb0-b7e0-10d70c2da060/zoom-rec.pcm

- /app/demo/upload//c8c97b17-2c26-4eb0-b7e0-10d70c2da060/zoom-rec.wav

"Env": [
"MEETING_NUMBER=84469451081",
"TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZGtLZXkiOiIwR1FFR
ktWMlM4SzJrWWNkU0xmeVRRIiwibW4iOiI4NDQ2OTQ1MTA4MSIsInJvbGUiOjAsImlhdCI6MTc1MjY3MTcx
NywiZXhwIjoxNzUyNjc1MzE3LCJhcHBLZXkiOiIwR1FFRktWMlM4SzJrWWNkU0xmeVRRIiwidG9rZW5FeHA
iOjE3NTI2NzUzMTcsInVzZXJJZGVudGl0eSI6IlJlY29yZGluZ0JvdCIsInNlc3Npb25LZXkiOiI2ZDJmMj
E0Yy1kZDVjLTRjOTQtYTlmNy00Y2Q5MzMyYmYzOTQiLCJ2ZXJzaW9uIjoxLCJwd2QiOiI2NjUxMTQifQ.EW
b8cHplcqUOX6cNDHah7X9xuoODTBPmYQxkMLdpQoQ",
"MEETING_PASSWORD=665114",
"RECORDING_TOKEN=lrnl8z9zt",
"CONVERSATION_ID=efcc6e68-a4fd-4c24-9983-5203552dbf43",

"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GET_VIDEO_RAW_DATA=false",
"GET_AUDIO_RAW_DATA=true",
"SEND_VIDEO_RAW_DATA=false",
"SEND_AUDIO_RAW_DATA=false",
"RECORDING_PATH=/app/demo/recording/audio.pcm",
"UPLOAD_PATH=/app/demo/upload",
"TENANT_ID="
],

sudo docker run --hostname=a4432494448b --mac-address=1a:6b:70:c4:44:88 --


env=MEETING_NUMBER=85319035361 --
env=TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZGtLZXkiOiIwR1FFRktWMlM4SzJrWWNk
U0xmeVRRIiwibW4iOiI4NTMxOTAzNTM2MSIsInJvbGUiOjAsImlhdCI6MTc1MzI2OTQzNCwiZXhwIjoxNzU
zMjczMDM0LCJhcHBLZXkiOiIwR1FFRktWMlM4SzJrWWNkU0xmeVRRIiwidG9rZW5FeHAiOjE3NTMyNzMwMz
QsInVzZXJJZGVudGl0eSI6IlJlY29yZGluZ0JvdCIsInNlc3Npb25LZXkiOiI1MGNlMjhhOC01ZjE4LTQ2O
GUtYWUyMi1kNWNlYTQyZTg2MmEiLCJ2ZXJzaW9uIjoxLCJwd2QiOiI1Nzk5NTgifQ.v5oPlp901FgE3EQYA
c69ty489Dd_vmUhDSSF0237UWo --env=MEETING_PASSWORD=579958 --
env=RECORDING_TOKEN=lrqgemubp --env=CONVERSATION_ID=03fc2ae6-06b1-4bf2-926c-
812da94a6b74 --env=TENANT_ID=india-support-iddyo
--env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --
env=GET_VIDEO_RAW_DATA=false --env=GET_AUDIO_RAW_DATA=true --
env=SEND_VIDEO_RAW_DATA=false --env=SEND_AUDIO_RAW_DATA=false --
env=RECORDING_PATH=/app/demo/recording/audio.pcm --env=UPLOAD_PATH=/app/demo/upload
--network=bridge --workdir=/app/demo/bin --restart=no --
label='org.opencontainers.image.ref.name=ubuntu' --
label='org.opencontainers.image.version=22.04' --runtime=runc 45d8d6cb4da8
https://slicfhir.cloud.enliv.com/api/fhir/tenants/clinical-trials-2n3nh/search/
Composition?identifier=clinical-trials-2n3nh-clinical-trial-
agent&_include=Composition:author&category=Completed&_offset=1&_count=10&organizati
on=0942cb91-68e8-4f18-948b-55d266e1f0ef&_sort=-_lastUpdated

https://slicfhir.cloud.enliv.com/api/fhir/tenants/clinical-trials-2n3nh/search/
Composition?identifier=clinical-trials-2n3nh-clinical-trial-agent&date=2025-07-
17&_include=Composition:author&category=Completed

identifier
clinical-trials-2n3nh-clinical-trial-agent

Why This is Important


Scenarios Where You Need This:
Host kicks the bot → Only onUserLeft() triggered
Waiting room rejection → Only onUserLeft() triggered
Meeting capacity limits → Only onUserLeft() triggered
Permission changes → Only onUserLeft() triggered

-----------------------------------------------------------------------------------
-----------------------------------------------------------

LEARN :
1. // Without extern "C" - Name gets mangled
void flushAudioBuffer() { ... }
// Compiled as: _Z16flushAudioBufferv

// With extern "C" - Name stays clean


extern "C" void flushAudioBuffer() { ... }
// Compiled as: flushAudioBuffer

# When Docker stops a container


docker stop zoom-bot-container

# Docker sends SIGTERM first, then SIGKILL after timeout


# Without signal handlers, audio buffer data would be lost

#void MeetingParticipantsCtrlEventListener::onUserLeft(IList<unsigned int >*


lstUserID, const zchar_t* strUserList ) {}
// Takes care of the bot kicked out.

-----------------------------------------------------------------------------------
-----------

Sinarions;
1. Meeting end
2. Meeting refreshed
3. BOT kicked
Root Cause Analysis
The segmentation fault is likely occurring due to one or more of these issues:

Race Condition: The onMeetingStatusChanged callback is being called while audio


data is still being processed or written to the audioBuffer by another thread.

Memory Access After Cleanup: The Zoom SDK may have already started cleaning up its
internal structures when MEETING_STATUS_DISCONNECTING is triggered, but your code
is still trying to access audio data or SDK resources.

File System Issues: The code is trying to write 41MB of audio data to a file in the
Docker container, which might fail due to permissions or disk space.

Premature Exit: The std::exit(0) call immediately after flushAudioBuffer() might be


terminating the process while the file write operation or the detached thread from
ExecuteShellScript() is still running.

Global State Corruption: The global audioBuffer might be accessed from multiple
threads without proper synchronization.

-----

🚨 Critical Issues Identified:


SOLID Principle Violations:
Single Responsibility Principle (SRP) - Classes doing multiple things
Open/Closed Principle - Hard-coded dependencies
Dependency Inversion - Direct dependencies instead of abstractions
Interface Segregation - Fat interfaces and mixed concerns
Production Readiness Issues:
Singleton antipattern usage
Global state and mutable shared state
Poor error handling and logging
Configuration management issues
Security vulnerabilities (CORS wildcard, debug logs in production)
No proper dependency injection container
Mixed architectural patterns
Database connection not properly abstracted
Hard-coded values throughout the codebase

-----------------------------------------------------------------------------------
------------------

MEETING_FOLDER-> stores the potential uploading

-----------------------------------------------------------------------------------
-------------------

PREV cloudrun stt function:


const Redis = require('ioredis');
const FormData = require('form-data');
const fs = require('fs');
const functions = require('@google-cloud/functions-framework');
const { Storage } = require('@google-cloud/storage');
const sdk = require('microsoft-cognitiveservices-speech-sdk');
const axios = require('axios');
const path = require('path');
const EventEmitter = require('events');

const storage = new Storage();


const emitter = new EventEmitter();

const ENDPOINT_BASE_URL = process.env.ENDPOINT_BASE_URL;


const AUTH_TOKEN = process.env.NOKI_API_SERVICE_INTERNAL_AUTH_TOKEN_DEV;

// Load environment variables


require('dotenv').config();

const redisClient = new Redis({


host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT || 6379
});

redisClient.on('error', (err) => {


console.error('Redis connection error:', err);
});

redisClient.on('connect', () => {
console.log('Connected to Redis');
});

function getProcessorKey(tenantId, conversationId ) {


return `zoom:tenants:${tenantId}:conversations:$
{conversationId}:chunk_processor_count`;
}

async function startProcessing(tenantId, conversationId ) {


const key = getProcessorKey(tenantId, conversationId );
await redisClient.incr(key);
}

async function endProcessing(tenantId, conversationId ) {


const key = getProcessorKey(tenantId, conversationId );
await redisClient.decr(key);
}

async function getActiveProcessorCount(tenantId, conversationId ) {


const key = getProcessorKey(tenantId, conversationId );
const count = await redisClient.get(key);
return parseInt(count, 10) || 0;
}

/*

*/
functions.cloudEvent('helloGCS', async cloudEvent => {
const file = cloudEvent.data;
const fileName = file.name;
const fileExt = path.extname(fileName).toLowerCase();

const [tenantId, conversationId] = file.name.split('/');


if (fileName.includes("endConversation")) {
console.log("End conversation signal received");
await handleEndConversation(tenantId, conversationId);

const key = getProcessorKey(tenantId, conversationId);


await redisClient.del(key);
console.log(`Cleaned up Redis key: ${key}`);

return;
}

if (fileExt !== '.wav') {


console.log(`Skipping non-wav file: ${fileName}`);
return;
}

await processWavFileAsync(file, tenantId, conversationId);


});

async function processWavFileAsync(file, tenantId, conversationId) {


const fileName = file.name;
try {
await startProcessing(tenantId, conversationId );
const accumulator = await transcribeWavFile(file, tenantId);

const url =
`${ENDPOINT_BASE_URL}/v1/scribe/tenants/${tenantId}/conversations/$
{conversationId}/record`;
await axios.post(url, { events: accumulator }, {
headers: {
Authorization: `Bearer ${AUTH_TOKEN}`,
'Content-Type': 'application/json',
},
});

console.log(`Successfully processed wav file: ${fileName}`);


} catch (error) {
console.error(`Error processing wav file ${fileName}:`, error);
} finally {
await endProcessing(tenantId, conversationId );
}
}

async function handleEndConversation(tenantId, conversationId, maxWaitTime =


300000) {
console.log(`Handling end conversation for: ${tenantId}/${conversationId}`);
const startTime = Date.now();

while (Date.now() - startTime < maxWaitTime) {


const activeCount = await getActiveProcessorCount(tenantId,
conversationId );

if (activeCount === 0) {
console.log(`All files completed for conversation: ${tenantId}/$
{conversationId}`);
break;
}

console.log(`Waiting for ${activeCount} files to complete...`);


await new Promise(resolve => setTimeout(resolve, 2000));
}

const url = `${ENDPOINT_BASE_URL}/v1/scribe/tenants/${tenantId}/conversations/$


{conversationId}/end-async`;

try {
await axios.post(url, { events: [] }, {
headers: {
Authorization: `Bearer ${AUTH_TOKEN}`,
'Content-Type': 'application/json',
},
});

console.log(`Successfully called end-async for conversation: ${tenantId}/$


{conversationId}`);
} catch (error) {
console.error(`Failed to call end-async for ${tenantId}/$
{conversationId}:`, error);
}
}

async function transcribeWavFile(file, tenantId) {


let response;

try {

// Download the file from GCS to a temporary location


// const tempFilePath = `/tmp/${file.name.replace('/', '_')}`;
// await storage.bucket(file.bucket).file(file.name).download({
// destination: tempFilePath
// });

// Create a read stream directly from GCS file


const fileStream =
storage.bucket(file.bucket).file(file.name).createReadStream();

const form = new FormData();


form.append('audio', fileStream, {filename: path.basename(file.name),
contentType: 'audio/wav'});
form.append('startTime', Date.now().toString());
form.append('locale', 'en-US');

const headers= {
Authorization: `Bearer ${AUTH_TOKEN}`
}

const url = `${ENDPOINT_BASE_URL}/v1/scribe/tenants/${tenantId}/convert-


conversation-to-events`;
response = await axios.post(url, form, {
headers: {
...form.getHeaders(),
...headers,
},
});

console.log(`Successfully processed wav file: ${file.name}`);


} catch (error) {
console.error(`Error processing wav file ${file.name}:`, error);
}
// finally {
// // clean up temporary file
// if (tempFilePath && fs.existsSync(tempFilePath)) {
// fs.unlinkSync(tempFilePath);
// console.log(`Cleaned up temporary file: ${tempFilePath}`);
// }
// }

return response?.data?.events || [];


}

-----------------------------------------------------------------------------------
-------------------------------

LOGS for :

❯ gcloud logging read '


resource.type="cloud_run_revision"
AND resource.labels.service_name="noki-zoom-stt-function-dev"
AND resource.labels.location="us-east4"

[
{
"insertId": "689463ce000f0289f168e3e8",
"labels": {
"execution_id": "14y5wl5p6aqe",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a9886851e533eb322c3dc2b03d782b1947f897661bf305e80d118dfad0c58a330bced8c0ee03
9373567e7055e14f5c87c8fbb32ba66e88bcbdddfb931aa5669041c303778ba27644dc06aabc",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:29:03.082259503Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "14724733626594408105",
"textPayload": "Cleaned up Redis key: zoom:tenants:india-support-
iddyo:conversations:a01bde71-26eb-4314-90ff-43f08ff3c3cc:chunk_processor_count\n",
"timestamp": "2025-08-07T08:29:02.983689Z"
},
{
"insertId": "689463ce000efd4d84897ed8",
"labels": {
"execution_id": "14y5wl5p6aqe",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a9886851e533eb322c3dc2b03d782b1947f897661bf305e80d118dfad0c58a330bced8c0ee03
9373567e7055e14f5c87c8fbb32ba66e88bcbdddfb931aa5669041c303778ba27644dc06aabc",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:29:03.082259503Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "14724733626594408105",
"textPayload": "Successfully called end-async for conversation: india-support-
iddyo/a01bde71-26eb-4314-90ff-43f08ff3c3cc\n",
"timestamp": "2025-08-07T08:29:02.982349Z"
},
{
"insertId": "689463cd000d277342740673",
"labels": {
"execution_id": "14y67l58ag8n",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:29:02.085041762Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "7894171588773243727",
"textPayload": "Cleaned up Redis key: zoom:tenants:india-support-
iddyo:conversations:a01bde71-26eb-4314-90ff-43f08ff3c3cc:chunk_processor_count\n",
"timestamp": "2025-08-07T08:29:01.862067Z"
},
{
"errorGroups": [
{
"id": "CO-57vrY76qp1wE"
}
],
"insertId": "689463cd000d2325e58f4994",
"labels": {
"execution_id": "14y67l58ag8n",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstderr",
"receiveTimestamp": "2025-08-07T08:29:01.863879876Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "7894171588773243727",
"textPayload": "Failed to call end-async for india-support-iddyo/a01bde71-26eb-
4314-90ff-43f08ff3c3cc: AxiosError: Request failed with status code 400\n at
settle (/workspace/node_modules/axios/dist/node/axios.cjs:2090:12)\n at
IncomingMessage.handleStreamEnd
(/workspace/node_modules/axios/dist/node/axios.cjs:3207:11)\n at
IncomingMessage.emit (node:events:536:35)\n at IncomingMessage.emit
(node:domain:552:15)\n at endReadableNT
(node:internal/streams/readable:1698:12)\n at process.processTicksAndRejections
(node:internal/process/task_queues:82:21)\n at Axios.request
(/workspace/node_modules/axios/dist/node/axios.cjs:4317:41)\n at
process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at
async handleEndConversation (/workspace/index.js:124:9)\n at async
/workspace/index.js:66:9 {\n code: 'ERR_BAD_REQUEST',\n config: {\n
transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n
clarifyTimeoutError: false\n },\n adapter: [ 'xhr', 'http', 'fetch' ],\n
transformRequest: [ [Function: transformRequest] ],\n transformResponse:
[ [Function: transformResponse] ],\n timeout: 0,\n xsrfCookieName: 'XSRF-
TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n
maxBodyLength: -1,\n env: { FormData: [Function [FormData]], Blob: [class
Blob] },\n validateStatus: [Function: validateStatus],\n headers: Object
[AxiosHeaders] {\n Accept: 'application/json, text/plain, */*',\n
'Content-Type': 'application/json',\n Authorization: 'Bearer
kIvXC2qYvZCnX1K4bEalem7xCT7AEADoZWV0eLe7GeRkRgz4n4f0fly4I4IopoFY',\n 'User-
Agent': 'axios/1.11.0',\n 'Content-Length': '13',\n 'Accept-Encoding':
'gzip, compress, deflate, br'\n },\n method: 'post',\n url: '
https://demo.noki.ai/api/ai/v1/scribe/tenants/india-support-iddyo/conversations/
a01bde71-26eb-4314-90ff-43f08ff3c3cc/end-async',\n data: '{\"events\":[]}',\n
allowAbsoluteUrls: true\n },\n request: <ref *1> ClientRequest {\n _events:
[Object: null prototype] {\n abort: [Function (anonymous)],\n aborted:
[Function (anonymous)],\n connect: [Function (anonymous)],\n error:
[Function (anonymous)],\n socket: [Function (anonymous)],\n timeout:
[Function (anonymous)],\n finish: [Function: requestOnFinish]\n },\n
_eventsCount: 7,\n _maxListeners: undefined,\n outputData: [],\n
outputSize: 0,\n writable: true,\n destroyed: true,\n _last: false,\n
chunkedEncoding: false,\n shouldKeepAlive: true,\n
maxRequestsOnConnectionReached: false,\n _defaultKeepAlive: true,\n
useChunkedEncodingByDefault: true,\n sendDate: false,\n _removedConnection:
false,\n _removedContLen: false,\n _removedTE: false,\n
strictContentLength: false,\n _contentLength: '13',\n _hasBody: true,\n
_trailer: '',\n finished: true,\n _headerSent: true,\n _closed: true,\n
socket: TLSSocket {\n _tlsOptions: [Object],\n _secureEstablished: true,\
n _securePending: false,\n _newSessionPending: false,\n
_controlReleased: true,\n secureConnecting: false,\n _SNICallback: null,\
n servername: 'demo.noki.ai',\n alpnProtocol: false,\n authorized:
true,\n authorizationError: null,\n encrypted: true,\n _events:
[Object: null prototype],\n _eventsCount: 9,\n connecting: false,\n
_hadError: false,\n _parent: null,\n _host: 'demo.noki.ai',\n
_closeAfterHandlingError: false,\n _readableState: [ReadableState],\n
_writableState: [WritableState],\n allowHalfOpen: false,\n _maxListeners:
undefined,\n _sockname: null,\n _pendingData: null,\n
_pendingEncoding: '',\n server: undefined,\n _server: null,\n ssl:
[TLSWrap],\n _requestCert: true,\n _rejectUnauthorized: true,\n
timeout: 5000,\n parser: null,\n _httpMessage: null,\n
[Symbol(alpncallback)]: null,\n [Symbol(res)]: [TLSWrap],\n
[Symbol(verified)]: true,\n [Symbol(pendingSession)]: null,\n
[Symbol(async_id_symbol)]: -1,\n [Symbol(kHandle)]: [TLSWrap],\n
[Symbol(lastWriteQueueSize)]: 0,\n [Symbol(timeout)]: Timeout {\n
_idleTimeout: 5000,\n _idlePrev: [TimersList],\n _idleNext:
[TimersList],\n _idleStart: 31147,\n _onTimeout: [Function: bound ],\
n _timerArgs: undefined,\n _repeat: null,\n _destroyed:
false,\n [Symbol(refed)]: false,\n [Symbol(kHasPrimitive)]: false,\n
[Symbol(asyncId)]: 12994,\n [Symbol(triggerId)]: 12992,\n
[Symbol(kResourceStore)]: [Object]\n },\n [Symbol(kBuffer)]: null,\n
[Symbol(kBufferCb)]: null,\n [Symbol(kBufferGen)]: null,\n
[Symbol(shapeMode)]: true,\n [Symbol(kCapture)]: false,\n
[Symbol(kSetNoDelay)]: false,\n [Symbol(kSetKeepAlive)]: true,\n
[Symbol(kSetKeepAliveInitialDelay)]: 1,\n [Symbol(kBytesRead)]: 0,\n
[Symbol(kBytesWritten)]: 0,\n [Symbol(connect-options)]: [Object]\n },\n
_header: 'POST
/api/ai/v1/scribe/tenants/india-support-iddyo/conversations/a01bde71-26eb-4314-
90ff-43f08ff3c3cc/end-async HTTP/1.1\\r\\n' +\n 'Accept: application/json,
text/plain, */*\\r\\n' +\n 'Content-Type: application/json\\r\\n' +\n
'Authorization: Bearer
kIvXC2qYvZCnX1K4bEalem7xCT7AEADoZWV0eLe7GeRkRgz4n4f0fly4I4IopoFY\\r\\n' +\n
'User-Agent: axios/1.11.0\\r\\n' +\n 'Content-Length: 13\\r\\n' +\n
'Accept-Encoding: gzip, compress, deflate, br\\r\\n' +\n 'Host: demo.noki.ai\\
r\\n' +\n 'Connection: keep-alive\\r\\n' +\n '\\r\\n',\n
_keepAliveTimeout: 0,\n _onPendingData: [Function: nop],\n agent: Agent {\n
_events: [Object: null prototype],\n _eventsCount: 2,\n _maxListeners:
undefined,\n defaultPort: 443,\n protocol: 'https:',\n options:
[Object: null prototype],\n requests: [Object: null prototype] {},\n
sockets: [Object: null prototype] {},\n freeSockets: [Object: null
prototype],\n keepAliveMsecs: 1000,\n keepAlive: true,\n maxSockets:
Infinity,\n maxFreeSockets: 256,\n scheduling: 'lifo',\n
maxTotalSockets: Infinity,\n totalSocketCount: 1,\n maxCachedSessions:
100,\n _sessionCache: [Object],\n [Symbol(shapeMode)]: false,\n
[Symbol(kCapture)]: false\n },\n socketPath: undefined,\n method: 'POST',\
n maxHeaderSize: undefined,\n insecureHTTPParser: undefined,\n
joinDuplicateHeaders: undefined,\n path: '/api/ai/v1/scribe/tenants/india-
support-iddyo/conversations/a01bde71-26eb-4314-90ff-43f08ff3c3cc/end-async',\n
_ended: true,\n res: IncomingMessage {\n _events: [Object],\n
_readableState: [ReadableState],\n _maxListeners: undefined,\n socket:
null,\n httpVersionMajor: 1,\n httpVersionMinor: 1,\n httpVersion:
'1.1',\n complete: true,\n rawHeaders: [Array],\n rawTrailers: [],\n
joinDuplicateHeaders: undefined,\n aborted: false,\n upgrade: false,\n
url: '',\n method: null,\n statusCode: 400,\n statusMessage: 'Bad
Request',\n client: [TLSSocket],\n _consuming: false,\n _dumped:
false,\n req: [Circular *1],\n _eventsCount: 4,\n responseUrl:
'https://demo.noki.ai/api/ai/v1/scribe/tenants/india-support-iddyo/conversations/
a01bde71-26eb-4314-90ff-43f08ff3c3cc/end-async',\n redirects: [],\n
[Symbol(shapeMode)]: true,\n [Symbol(kCapture)]: false,\n
[Symbol(kHeaders)]: [Object],\n [Symbol(kHeadersCount)]: 44,\n
[Symbol(kTrailers)]: null,\n [Symbol(kTrailersCount)]: 0\n },\n aborted:
false,\n timeoutCb: null,\n upgradeOrConnect: false,\n parser: null,\n
maxHeadersCount: null,\n reusedSocket: false,\n host: 'demo.noki.ai',\n
protocol: 'https:',\n _redirectable: Writable {\n _events: [Object],\n
_writableState: [WritableState],\n _maxListeners: undefined,\n _options:
[Object],\n _ended: true,\n _ending: true,\n _redirectCount: 0,\n
_redirects: [],\n _requestBodyLength: 13,\n _requestBodyBuffers: [],\n
_eventsCount: 3,\n _onNativeResponse: [Function (anonymous)],\n
_currentRequest: [Circular *1],\n _currentUrl:
'https://demo.noki.ai/api/ai/v1/scribe/tenants/india-support-iddyo/conversations/
a01bde71-26eb-4314-90ff-43f08ff3c3cc/end-async',\n [Symbol(shapeMode)]: true,\
n [Symbol(kCapture)]: false\n },\n [Symbol(shapeMode)]: false,\n
[Symbol(kCapture)]: false,\n [Symbol(kBytesWritten)]: 0,\n
[Symbol(kNeedDrain)]: false,\n [Symbol(corked)]: 0,\n [Symbol(kOutHeaders)]:
[Object: null prototype] {\n accept: [Array],\n 'content-type': [Array],\
n authorization: [Array],\n 'user-agent': [Array],\n 'content-
length': [Array],\n 'accept-encoding': [Array],\n host: [Array]\n },\n
[Symbol(errored)]: null,\n [Symbol(kHighWaterMark)]: 16384,\n
[Symbol(kRejectNonStandardBodyWrites)]: false,\n [Symbol(kUniqueHeaders)]: null\
n },\n response: {\n status: 400,\n statusText: 'Bad Request',\n
headers: Object [AxiosHeaders] {\n 'content-security-policy': \"default-src
'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-
ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-
src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-
requests\",\n 'cross-origin-opener-policy': 'same-origin',\n 'cross-
origin-resource-policy': 'same-origin',\n 'origin-agent-cluster': '?1',\n
'referrer-policy': 'no-referrer',\n 'strict-transport-security': 'max-
age=15552000; includeSubDomains',\n 'x-content-type-options':
'nosniff',\n 'x-dns-prefetch-control': 'off',\n 'x-download-options':
'noopen',\n 'x-frame-options': 'SAMEORIGIN',\n 'x-permitted-cross-domain-
policies': 'none',\n 'x-xss-protection': '0',\n 'x-correlation-id':
'5c25380a-5daf-496d-8081-c3363155d6f6',\n 'content-type': 'application/json;
charset=utf-8',\n etag: 'W/\"41-v7PGmLR2nZveaEOFiVFHCSjqxUs\"',\n vary:
'Accept-Encoding',\n 'x-cloud-trace-context':
'9420176b50b72e8b2c21427550403333',\n date: 'Thu, 07 Aug 2025 08:29:01 GMT',\n
server: 'Google Frontend',\n 'content-length': '65',\n via: '1.1
google',\n 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000'\n
},\n config: {\n transitional: [Object],\n adapter: [Array],\n
transformRequest: [Array],\n transformResponse: [Array],\n timeout: 0,\n
xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n
maxContentLength: -1,\n maxBodyLength: -1,\n env: [Object],\n
validateStatus: [Function: validateStatus],\n headers: [Object
[AxiosHeaders]],\n method: 'post',\n url: '
https://demo.noki.ai/api/ai/v1/scribe/tenants/india-support-iddyo/conversations/
a01bde71-26eb-4314-90ff-43f08ff3c3cc/end-async',\n data: '{\"events\":[]}',\n
allowAbsoluteUrls: true\n },\n request: <ref *1> ClientRequest {\n
_events: [Object: null prototype],\n _eventsCount: 7,\n _maxListeners:
undefined,\n outputData: [],\n outputSize: 0,\n writable: true,\n
destroyed: true,\n _last: false,\n chunkedEncoding: false,\n
shouldKeepAlive: true,\n maxRequestsOnConnectionReached: false,\n
_defaultKeepAlive: true,\n useChunkedEncodingByDefault: true,\n sendDate:
false,\n _removedConnection: false,\n _removedContLen: false,\n
_removedTE: false,\n strictContentLength: false,\n _contentLength: '13',\
n _hasBody: true,\n _trailer: '',\n finished: true,\n
_headerSent: true,\n _closed: true,\n socket: [TLSSocket],\n
_header: 'POST
/api/ai/v1/scribe/tenants/india-support-iddyo/conversations/a01bde71-26eb-4314-
90ff-43f08ff3c3cc/end-async HTTP/1.1\\r\\n' +\n 'Accept: application/json,
text/plain, */*\\r\\n' +\n 'Content-Type: application/json\\r\\n' +\n
'Authorization: Bearer
kIvXC2qYvZCnX1K4bEalem7xCT7AEADoZWV0eLe7GeRkRgz4n4f0fly4I4IopoFY\\r\\n' +\n
'User-Agent: axios/1.11.0\\r\\n' +\n 'Content-Length: 13\\r\\n' +\n
'Accept-Encoding: gzip, compress, deflate, br\\r\\n' +\n 'Host:
demo.noki.ai\\r\\n' +\n 'Connection: keep-alive\\r\\n' +\n '\\r\\n',\
n _keepAliveTimeout: 0,\n _onPendingData: [Function: nop],\n agent:
[Agent],\n socketPath: undefined,\n method: 'POST',\n maxHeaderSize:
undefined,\n insecureHTTPParser: undefined,\n joinDuplicateHeaders:
undefined,\n path:
'/api/ai/v1/scribe/tenants/india-support-iddyo/conversations/a01bde71-26eb-4314-
90ff-43f08ff3c3cc/end-async',\n _ended: true,\n res: [IncomingMessage],\n
aborted: false,\n timeoutCb: null,\n upgradeOrConnect: false,\n
parser: null,\n maxHeadersCount: null,\n reusedSocket: false,\n
host: 'demo.noki.ai',\n protocol: 'https:',\n _redirectable: [Writable],\
n [Symbol(shapeMode)]: false,\n [Symbol(kCapture)]: false,\n
[Symbol(kBytesWritten)]: 0,\n [Symbol(kNeedDrain)]: false,\n
[Symbol(corked)]: 0,\n [Symbol(kOutHeaders)]: [Object: null prototype],\n
[Symbol(errored)]: null,\n [Symbol(kHighWaterMark)]: 16384,\n
[Symbol(kRejectNonStandardBodyWrites)]: false,\n [Symbol(kUniqueHeaders)]:
null\n },\n data: { code: 400, message: 'Cannot end, conversation is in end
state' }\n },\n status: 400\n}\n",
"timestamp": "2025-08-07T08:29:01.860965Z"
},
{
"insertId": "689463cd000c7a425057af05",
"labels": {
"execution_id": "14y67l58ag8n",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:29:02.085041762Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "7894171588773243727",
"textPayload": "All files completed for conversation:
india-support-iddyo/a01bde71-26eb-4314-90ff-43f08ff3c3cc\n",
"timestamp": "2025-08-07T08:29:01.817730Z"
},
{
"insertId": "689463cd000c5bd851fbd069",
"labels": {
"execution_id": "14y67l58ag8n",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:29:02.085041762Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "7894171588773243727",
"textPayload": "Handling end conversation for: india-support-iddyo/a01bde71-
26eb-4314-90ff-43f08ff3c3cc\n",
"timestamp": "2025-08-07T08:29:01.809944Z"
},
{
"insertId": "689463cd000c5aa0f953a2c9",
"labels": {
"execution_id": "14y67l58ag8n",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:29:02.085041762Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "7894171588773243727",
"textPayload": "End conversation signal received\n",
"timestamp": "2025-08-07T08:29:01.809632Z"
},
{
"httpRequest": {
"latency": "0.058847835s",
"protocol": "HTTP/1.1",
"remoteIp": "64.233.172.171",
"requestMethod": "POST",
"requestSize": "3488",
"requestUrl": "https://noki-zoom-stt-function-dev-hifck5sj6a-uk.a.run.app/?
__GCP_CloudEventsMode=GCS_NOTIFICATION",
"responseSize": "82",
"serverIp": "34.143.74.2",
"status": 200,
"userAgent": "APIs-Google; (+https://developers.google.com/webmasters/APIs-
Google.html)"
},
"insertId": "689463cd000d2b8ace44aff5",
"labels": {
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/cloud_event_id": "15772612624952968",
"run.googleapis.com/cloud_event_source":
"//storage.googleapis.com/projects/_/buckets/noki-zoom-recordings"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Frequests",
"receiveTimestamp": "2025-08-07T08:29:01.864787484Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"severity": "INFO",
"spanId": "6d8dbb3c20cf6b4f",
"timestamp": "2025-08-07T08:29:01.801939Z",
"trace": "projects/enliv-342806/traces/e1e7c4db0809d81f425e631a9fd081fe"
},
{
"insertId": "689463cd00065abee72bc4d0",
"labels": {
"execution_id": "14y5wl5p6aqe",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a9886851e533eb322c3dc2b03d782b1947f897661bf305e80d118dfad0c58a330bced8c0ee03
9373567e7055e14f5c87c8fbb32ba66e88bcbdddfb931aa5669041c303778ba27644dc06aabc",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:29:01.749058647Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "14724733626594408105",
"textPayload": "All files completed for conversation:
india-support-iddyo/a01bde71-26eb-4314-90ff-43f08ff3c3cc\n",
"timestamp": "2025-08-07T08:29:01.416446Z"
},
{
"insertId": "689463cd000650d048d6403d",
"labels": {
"execution_id": "14y5wl5p6aqe",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a9886851e533eb322c3dc2b03d782b1947f897661bf305e80d118dfad0c58a330bced8c0ee03
9373567e7055e14f5c87c8fbb32ba66e88bcbdddfb931aa5669041c303778ba27644dc06aabc",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:29:01.749058647Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "14724733626594408105",
"textPayload": "Handling end conversation for: india-support-iddyo/a01bde71-
26eb-4314-90ff-43f08ff3c3cc\n",
"timestamp": "2025-08-07T08:29:01.413904Z"
},
{
"insertId": "689463cd00064f7051e96d64",
"labels": {
"execution_id": "14y5wl5p6aqe",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a9886851e533eb322c3dc2b03d782b1947f897661bf305e80d118dfad0c58a330bced8c0ee03
9373567e7055e14f5c87c8fbb32ba66e88bcbdddfb931aa5669041c303778ba27644dc06aabc",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:29:01.415571506Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "14724733626594408105",
"textPayload": "End conversation signal received\n",
"timestamp": "2025-08-07T08:29:01.413552Z"
},
{
"httpRequest": {
"latency": "1.574946803s",
"protocol": "HTTP/1.1",
"remoteIp": "74.125.212.71",
"requestMethod": "POST",
"requestSize": "3448",
"requestUrl": "https://noki-zoom-stt-function-dev-hifck5sj6a-uk.a.run.app/?
__GCP_CloudEventsMode=GCS_NOTIFICATION",
"responseSize": "82",
"serverIp": "34.143.72.2",
"status": 200,
"userAgent": "APIs-Google; (+https://developers.google.com/webmasters/APIs-
Google.html)"
},
"insertId": "689463ce000f06b08928d8c2",
"labels": {
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a9886851e533eb322c3dc2b03d782b1947f897661bf305e80d118dfad0c58a330bced8c0ee03
9373567e7055e14f5c87c8fbb32ba66e88bcbdddfb931aa5669041c303778ba27644dc06aabc",
"run.googleapis.com/cloud_event_id": "15771156683898073",
"run.googleapis.com/cloud_event_source":
"//storage.googleapis.com/projects/_/buckets/noki-zoom-recordings"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Frequests",
"receiveTimestamp": "2025-08-07T08:29:03.197196345Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"severity": "INFO",
"spanId": "cc58c337e968b6a9",
"timestamp": "2025-08-07T08:29:01.397334Z",
"trace": "projects/enliv-342806/traces/2b51065aae9e00a6d977e15203aaf784",
"traceSampled": true
},
{
"insertId": "689463b5000f137bc30f2adb",
"labels": {
"execution_id": "14xih9xplj7u",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a9886851e533eb322c3dc2b03d782b1947f897661bf305e80d118dfad0c58a330bced8c0ee03
9373567e7055e14f5c87c8fbb32ba66e88bcbdddfb931aa5669041c303778ba27644dc06aabc",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:28:38.299647266Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "17144229841988859127",
"textPayload": "Successfully processed wav file: india-support-iddyo/a01bde71-
26eb-4314-90ff-43f08ff3c3cc/zoom-rec-audio_20250807_082827.wav\n",
"timestamp": "2025-08-07T08:28:37.988027Z"
},
{
"insertId": "689463b5000e80da5b5acc28",
"labels": {
"execution_id": "14xih9xplj7u",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a9886851e533eb322c3dc2b03d782b1947f897661bf305e80d118dfad0c58a330bced8c0ee03
9373567e7055e14f5c87c8fbb32ba66e88bcbdddfb931aa5669041c303778ba27644dc06aabc",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:28:37.966188643Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "17144229841988859127",
"textPayload": "Successfully processed wav file: india-support-iddyo/a01bde71-
26eb-4314-90ff-43f08ff3c3cc/zoom-rec-audio_20250807_082827.wav\n",
"timestamp": "2025-08-07T08:28:37.950490Z"
},
{
"insertId": "689463b2000b0ee772758f2d",
"labels": {
"execution_id": "14xiwcfb87ii",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:28:34.970445341Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "1949240671445688674",
"textPayload": "Successfully processed wav file: india-support-iddyo/a01bde71-
26eb-4314-90ff-43f08ff3c3cc/zoom-rec-audio_20250807_082827.wav\n",
"timestamp": "2025-08-07T08:28:34.724711Z"
},
{
"insertId": "689463b2000a9533ac508eb2",
"labels": {
"execution_id": "14xiwcfb87ii",
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:28:34.970445341Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"spanId": "1949240671445688674",
"textPayload": "Successfully processed wav file: india-support-iddyo/a01bde71-
26eb-4314-90ff-43f08ff3c3cc/zoom-rec-audio_20250807_082827.wav\n",
"timestamp": "2025-08-07T08:28:34.693555Z"
},
{
"insertId": "689463af0008158df3fe797c",
"labels": {
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:28:31.641594517Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"textPayload": "Connected to Redis",
"timestamp": "2025-08-07T08:28:31.529805Z"
},
{
"insertId": "689463af0007f60b2550b0da",
"labels": {
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fvarlog%2Fsystem",
"receiveTimestamp": "2025-08-07T08:28:31.583710578Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"severity": "INFO",
"textPayload": "Default STARTUP TCP probe succeeded after 1 attempt for
container \"worker\" on port 8080.",
"timestamp": "2025-08-07T08:28:31.521739Z"
},
{
"insertId": "689463af0007c933e1db44ab",
"labels": {
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/base_image_versions": "us-docker.pkg.dev/serverless-
runtimes/google-22-full/runtimes/nodejs20:nodejs20_20250727_20_19_4_RC00"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2025-08-07T08:28:31.641594517Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"textPayload": "[dotenv@17.2.1] injecting env (0) from .env -- tip: 🔐 prevent
building .env in docker: https://dotenvx.com/prebuild",
"timestamp": "2025-08-07T08:28:31.510259Z"
},
{
"httpRequest": {
"latency": "3.198655211s",
"protocol": "HTTP/1.1",
"remoteIp": "74.125.215.164",
"requestMethod": "POST",
"requestSize": "3663",
"requestUrl": "https://noki-zoom-stt-function-dev-hifck5sj6a-uk.a.run.app/?
__GCP_CloudEventsMode=GCS_NOTIFICATION",
"responseSize": "82",
"serverIp": "34.143.72.2",
"status": 200,
"userAgent": "APIs-Google; (+https://developers.google.com/webmasters/APIs-
Google.html)"
},
"insertId": "689463b2000b1eee1ad41e85",
"labels": {
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/cloud_event_id": "15773162400915870",
"run.googleapis.com/cloud_event_source":
"//storage.googleapis.com/projects/_/buckets/noki-zoom-recordings"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Frequests",
"receiveTimestamp": "2025-08-07T08:28:35.045708053Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"severity": "INFO",
"spanId": "1b0d18102b43a162",
"timestamp": "2025-08-07T08:28:31.203877Z",
"trace": "projects/enliv-342806/traces/c3012e66be7d1c88b3cd765feb3d2c2f"
}
]

Looking at your logs, you have two separate executions running simultaneously for
the same conversation:

Execution ID: 14y5wl5p6aqe (timestamps around 08:29:01.397-08:29:02.983)


Execution ID: 14y67l58ag8n (timestamps around 08:29:01.801-08:29:01.863)
Both executions are processing the same conversation: india-support-iddyo/a01bde71-
26eb-4314-90ff-43f08ff3c3cc

gcloud logging read '


jsonPayload.message:"cloud_event_id" OR
labels."run.googleapis.com/cloud_event_id"="15771156683898073" OR
labels."run.googleapis.com/cloud_event_id"="15772612624952968"
' --limit=10 --format=json

[
{
"httpRequest": {
"latency": "0.058847835s",
"protocol": "HTTP/1.1",
"remoteIp": "64.233.172.171",
"requestMethod": "POST",
"requestSize": "3488",
"requestUrl": "https://noki-zoom-stt-function-dev-hifck5sj6a-uk.a.run.app/?
__GCP_CloudEventsMode=GCS_NOTIFICATION",
"responseSize": "82",
"serverIp": "34.143.74.2",
"status": 200,
"userAgent": "APIs-Google; (+https://developers.google.com/webmasters/APIs-
Google.html)"
},
"insertId": "689463cd000d2b8ace44aff5",
"labels": {
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a988fababebd9fda5b0a05a1ebcb9421a88199a1f818ed0d12e0377ddc84f20d8767c8b5ad5c
e42747a9cc41807fd97e1bbaca32421348b6e076d56aa3c8b684dc6dd77363c89e7da5261fc0",
"run.googleapis.com/cloud_event_id": "15772612624952968",
"run.googleapis.com/cloud_event_source":
"//storage.googleapis.com/projects/_/buckets/noki-zoom-recordings"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Frequests",
"receiveTimestamp": "2025-08-07T08:29:01.864787484Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"severity": "INFO",
"spanId": "6d8dbb3c20cf6b4f",
"timestamp": "2025-08-07T08:29:01.801939Z",
"trace": "projects/enliv-342806/traces/e1e7c4db0809d81f425e631a9fd081fe"
},
{
"httpRequest": {
"latency": "1.574946803s",
"protocol": "HTTP/1.1",
"remoteIp": "74.125.212.71",
"requestMethod": "POST",
"requestSize": "3448",
"requestUrl": "https://noki-zoom-stt-function-dev-hifck5sj6a-uk.a.run.app/?
__GCP_CloudEventsMode=GCS_NOTIFICATION",
"responseSize": "82",
"serverIp": "34.143.72.2",
"status": 200,
"userAgent": "APIs-Google; (+https://developers.google.com/webmasters/APIs-
Google.html)"
},
"insertId": "689463ce000f06b08928d8c2",
"labels": {
"goog-managed-by": "cloudfunctions",
"instanceId":
"0069c7a9886851e533eb322c3dc2b03d782b1947f897661bf305e80d118dfad0c58a330bced8c0ee03
9373567e7055e14f5c87c8fbb32ba66e88bcbdddfb931aa5669041c303778ba27644dc06aabc",
"run.googleapis.com/cloud_event_id": "15771156683898073",
"run.googleapis.com/cloud_event_source":
"//storage.googleapis.com/projects/_/buckets/noki-zoom-recordings"
},
"logName": "projects/enliv-342806/logs/run.googleapis.com%2Frequests",
"receiveTimestamp": "2025-08-07T08:29:03.197196345Z",
"resource": {
"labels": {
"configuration_name": "noki-zoom-stt-function-dev",
"location": "us-east4",
"project_id": "enliv-342806",
"revision_name": "noki-zoom-stt-function-dev-00024-j49",
"service_name": "noki-zoom-stt-function-dev"
},
"type": "cloud_run_revision"
},
"severity": "INFO",
"spanId": "cc58c337e968b6a9",
"timestamp": "2025-08-07T08:29:01.397334Z",
"trace": "projects/enliv-342806/traces/2b51065aae9e00a6d977e15203aaf784",
"traceSampled": true
}
-----------------------------------------------------------------------------------
---------------------------------------------------------

You might also like