How can I get token for my linux bot?

How can I get token(not record token) for my linux headless bot?

For bot I use this sample meetingsdk-linux-raw-recording-sample and General App

Hey @emotioniq, here’s instructions on how to generate the token from your Zoom credentials: Meeting SDK Auth

One alternative is to use Recall.ai for your meeting bots instead. It’s a simple 3rd party API that lets you use meeting bots to get raw audio/video from meetings without you needing to spend months to build, scale and maintain these bots.

Let me know if you have any questions!

Ok, I get JWT token, but my bot don’t connect to meeting. When I start docker container I get next message:

unix:path=/run/dbus/system_bus_socket,guid=09b47105f3fa0147db1da1dd65d7092a
Adding user `root' to group `pulse-access' ...
Adding user root to group pulse-access
Done.
Adding user `root' to group `audio' ...
Adding user root to group audio
Done.
cp: target '/root/.config/pulse/' is not a directory
W: [pulseaudio] main.c: This program is not intended to be run as root (unless --system is specified).
19
mkdir: cannot create directory '/root/.config': File exists
getpath
self path: /app/demo/bin
Readfile success.
Reading..meeting_number: "86980777992"
Reading..token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJpYXQiOjE3MDg1Nzk3NzQsImV4cCI6MTY5ODY5MTQ4OSwidG9rZW5FeHAiOjE2OTg2OTE0ODksIm1uIjoiODY5ODA3Nzc5OTIiLCJyb2xlIjoiMCJ9.yeeR339U0l3e0z5hEOCxl0am3beouiZsocZta9fe10M"
Reading..meeting_password: ""
Reading..recording_token: ""
Reading..GetVideoRawData: "true"
Reading..GetAudioRawData: "true"
Reading..SendVideoRawData: "false"
Reading..SendAudioRawData: "false"
Meeting Number: 86980777992
Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJpYXQiOjE3MDg1Nzk3NzQsImV4cCI6MTY5ODY5MTQ4OSwidG9rZW5FeHAiOjE2OTg2OTE0ODksIm1uIjoiODY5ODA3Nzc5OTIiLCJyb2xlIjoiMCJ9.yeeR339U0l3e0z5hEOCxl0am3beouiZsocZta9fe10M
meeting_password: 
recording_token: 
GetVideoRawData before parsing is : true
GetVideoRawData: 1
GetAudioRawData before parsing is : true
GetAudioRawData: 1
SendVideoRawData before parsing is : false
SendVideoRawData: 0
SendAudioRawData before parsing is : false
SendAudioRawData: 0
directory of config file: /app/demo/bin/config.txt
Init meetingSdk:success
AuthServiceEventListener added.
AuthService created.
AuthSDK:token extracted from config file eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJpYXQiOjE3MDg1Nzk3NzQsImV4cCI6MTY5ODY5MTQ4OSwidG9rZW5FeHAiOjE2OTg2OTE0ODksIm1uIjoiODY5ODA3Nzc5OTIiLCJyb2xlIjoiMCJ9.yeeR339U0l3e0z5hEOCxl0am3beouiZsocZta9fe10M

What can I do? I try many things, but my bot don’t connect

@chunsiong.zoom Maybe you now how to fix that?

@emotioniq ,

Your expiry date for your token is in the past.

Can you try again with a valid expiry date? Make sure it is more than 30 mins from IAT, and not more than 2 days from IAT.

image

@chunsiong.zoom Yeah, my bot start connect to meeting, but he connect and in this time disconnect from meeting, what is the reason?

Meeting Number: 87444129532
Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJpYXQiOjE3MDg2OTA4NzIsImV4cCI6MTcwODY5Njg3MiwidG9rZW5FeHAiOjE3MDg2OTY4NzIsIm1uIjoiODc0NDQxMjk1MzIiLCJyb2xlIjoiMCJ9.NKdimh9mA412lzETuLdrbMHDi_4mY79Y4X8spZSEAHY
meeting_password: 
recording_token: lrrd08b6p
GetVideoRawData before parsing is : true
GetVideoRawData: 1
GetAudioRawData before parsing is : true
GetAudioRawData: 1
SendVideoRawData before parsing is : false
SendVideoRawData: 0
SendAudioRawData before parsing is : false
SendAudioRawData: 0
Readfile success.
Reading..meeting_number: "87444129532"
Reading..token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJpYXQiOjE3MDg2OTA4NzIsImV4cCI6MTcwODY5Njg3MiwidG9rZW5FeHAiOjE3MDg2OTY4NzIsIm1uIjoiODc0NDQxMjk1MzIiLCJyb2xlIjoiMCJ9.NKdimh9mA412lzETuLdrbMHDi_4mY79Y4X8spZSEAHY"
Reading..meeting_password: ""
Reading..recording_token: "lrrd08b6p"
Reading..GetVideoRawData: "true"
Reading..GetAudioRawData: "true"
Reading..SendVideoRawData: "false"
Reading..SendAudioRawData: "false"
directory of config file: /app/demo/bin/config.txt
Init meetingSdk:success
AuthServiceEventListener added.
AuthService created.
AuthSDK:token extracted from config file eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJpYXQiOjE3MDg2OTA4NzIsImV4cCI6MTcwODY5Njg3MiwidG9rZW5FeHAiOjE3MDg2OTY4NzIsIm1uIjoiODc0NDQxMjk1MzIiLCJyb2xlIjoiMCJ9.NKdimh9mA412lzETuLdrbMHDi_4mY79Y4X8spZSEAHY
Auth succeeded: JWT.
OnAuthenticationComplete
Joining Meeting
MeetingService created.
Settingservice created.
JWT token is eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJpYXQiOjE3MDg2OTA4NzIsImV4cCI6MTcwODY5Njg3MiwidG9rZW5FeHAiOjE3MDg2OTY4NzIsIm1uIjoiODc0NDQxMjk1MzIiLCJyb2xlIjoiMCJ9.NKdimh9mA412lzETuLdrbMHDi_4mY79Y4X8spZSEAHY
Recording token is lrrd08b6p
Setting recording token
join_meeting:success
onLoginReturnWithReason: 0
onMeetingStatusChanged: 1, iResult: 0
Connect to the meeting server status.
onMeetingStatusChanged: 4, iResult: 0
Disconnect the meeting server, leave meeting status.
onMeetingStatusChanged: 6, iResult: 500
Failed to connect the meeting server.
onMeetingStatusChanged: 7, iResult: 0

@emotioniq ,

Can you check that your recording token is freshly generated? It is only valid for 2 minutes.

@chunsiong.zoom I try to use fresh recording token, but i have same issue

@emotioniq , could you try without a recording token as well?

@chunsiong.zoom
This is when I run bot without record token

AuthServiceEventListener added.
Joining Meeting
MeetingService created.
Settingservice created.
JWT token is eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJpYXQiOjE3MDg3ODMyMjUsImV4cCI6MTcwODc5NDAyNSwidG9rZW5FeHAiOjE3MDg3OTQwMjUsIm1uIjoiODUyNjcyOTUzOTciLCJyb2xlIjowfQ.IMeaKrRjsi1Yaymw_BxmlwZKLWzK5ZwZP9BTNKHbT88Auth succeeded: JWT.
OnAuthenticationComplete

Recording token is 
Leaving recording token as NULL
join_meeting:success
onLoginReturnWithReason: 0
onMeetingStatusChanged: 1, iResult: 0

@emotioniq , are you joining a meeting which is created by a user in your own account?
You cannot join an external meeting without publishing your app.

Could you also ensure that the password for the meeting is correct?

@chunsiong.zoom Yes, I connect to meeting created by my own and I don’t set the password for the meeting

@emotioniq did you concurrently join as host on a regular zoom client? There is a possibility that the bot might be in the waiting room.

@chunsiong.zoom Yes, I connect to the meeting created by my own, and after this I start my bot, and I have next view in the app


No one in the waiting room

@emotioniq ,

The password on the Linux SDK might be incorrect. Could you check again?

@chunsiong.zoom
I try and now my bot can connect, but without getting raw data. When I start docker container with recording_token which i get from MeetingAPI i get next massage:

docker container run --env MEETING_NUM=83632429183 --env MEETING_PASS=mXL6XJ --env TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJyb2xlIjoiMSIsImlhdCI6MTcwOTUxOTkwMiwiZXhwIjoxNzA5NTk5OTAyLCJ0b2tlbkV4cCI6MTcwOTU5OTkwMn0.CLheVMZB168lnN9djBcp3a79EN6XZKjYFS4-lUaGnG4 --env RECORD_TOKEN=lre9hp7i6 test
unix:path=/run/dbus/system_bus_socket,guid=5cd6723f5c5e09967e4e720f65e5de84
Adding user `root' to group `pulse-access' ...
Adding user root to group pulse-access
Done.
Adding user `root' to group `audio' ...
Adding user root to group audio
Done.
cp: target '/root/.config/pulse/' is not a directory
W: [pulseaudio] main.c: This program is not intended to be run as root (unless --system is specified).
19
mkdir: cannot create directory '/root/.config': File exists
getpath
self path: /app/demo/bin
Readfile success.
Reading..meeting_number: "83632429183" 
Reading.. token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJyb2xlIjoiMSIsImlhdCI6MTcwOTUxOTkwMiwiZXhwIjoxNzA5NTk5OTAyLCJ0b2tlbkV4cCI6MTcwOTU5OTkwMn0.CLheVMZB168lnN9djBcp3a79EN6XZKjYFS4-lUaGnG4" 
Reading.. meeting_password: "mXL6XJ" 
Reading.. recording_token: "lre9hp7i6" 
Reading.. GetVideoRawData: "true" 
Reading.. GetAudioRawData: "true" 
Reading.. SendVideoRawData: "false" 
Reading.. SendAudioRawData: "false" 
Meeting Number: 83632429183
Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJyb2xlIjoiMSIsImlhdCI6MTcwOTUxOTkwMiwiZXhwIjoxNzA5NTk5OTAyLCJ0b2tlbkV4cCI6MTcwOTU5OTkwMn0.CLheVMZB168lnN9djBcp3a79EN6XZKjYFS4-lUaGnG4
meeting_password: mXL6XJ
recording_token: lre9hp7i6
GetVideoRawData before parsing is : true
GetVideoRawData: 1
GetAudioRawData before parsing is : true
GetAudioRawData: 1
SendVideoRawData before parsing is : false
SendVideoRawData: 0
SendAudioRawData before parsing is : false
SendAudioRawData: 0
Init meetingSdk:successdirectory of config file: /app/demo/bin/config.txt

AuthService created.
AuthSDK:token extracted from config file eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJyb2xlIjoiMSIsImlhdCI6MTcwOTUxOTkwMiwiZXhwIjoxNzA5NTk5OTAyLCJ0b2tlbkV4cCI6MTcwOTU5OTkwMn0.CLheVMZB168lnN9djBcp3a79EN6XZKjYFS4-lUaGnG4
AuthServiceEventListener added.
Joining Meeting
MeetingService created.
Settingservice created.Auth succeeded: JWT.
OnAuthenticationComplete

JWT token is eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJ3Vmk0UDkyY1QyQ1VVR0ZEdmVGT3ciLCJyb2xlIjoiMSIsImlhdCI6MTcwOTUxOTkwMiwiZXhwIjoxNzA5NTk5OTAyLCJ0b2tlbkV4cCI6MTcwOTU5OTkwMn0.CLheVMZB168lnN9djBcp3a79EN6XZKjYFS4-lUaGnG4
Recording token is lre9hp7i6
Setting recording token
join_meeting:success
onLoginReturnWithReason: 0
onMeetingStatusChanged: 1, iResult: 0
Connect to the meeting server status.
onMeetingStatusChanged: 4, iResult: 0
Disconnect the meeting server, leave meeting status.
onMeetingStatusChanged: 6, iResult: 500
Failed to connect the meeting server.
onMeetingStatusChanged: 7, iResult: 0

@emotioniq can you try without a recording token first?

There is a chance that the recording token expires before the container build is completed.

@chunsiong.zoom When I start bot without record token, he is connecting

@emotioniq , this means that your token has is invalid or has expired. The token is only valid for 2 minutes. You will need to use the token to join the meeting within this timespan.

@chunsiong.zoom How can I get token without timespan?