{"id":17610,"date":"2023-03-02T20:01:18","date_gmt":"2023-03-02T17:01:18","guid":{"rendered":"https:\/\/trueconf.com/blog\/?p=17610"},"modified":"2026-05-27T17:27:32","modified_gmt":"2026-05-27T14:27:32","slug":"how-to-connect-a-guest-to-a-conference-directly","status":"publish","type":"post","link":"https:\/\/trueconf.com/blog\/knowledge-base\/how-to-connect-a-guest-to-a-conference-directly","title":{"rendered":"How to connect a guest to a conference directly"},"content":{"rendered":"<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">In some cases it is necessary to host a conference directly on a website. For example, in telemedicine settings, a patient can communicate with a doctor through a hospital website without installing any third-party software.<\/p>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">The goal is to create a conference for communicating with a healthcare worker so that a user can join this meeting directly on the website.<\/p>\n<div class=\"accent-note accent-note--line ui-mb-sm-1 ui-mt-xs-3\">\n<p class=\"primary-medium-text\">\nTo check how this feature can be implemented, visit <a href=\"https:\/\/github.com\/TrueConf\/TrueConf-One-Click-Web-Conference\" target=\"_blank\" rel=\"noopener\">our GitHub<\/a>.\n<\/p>\n<\/div>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">In this article, you\u2019ll learn how to use <a href=\"https:\/\/developers.trueconf.com\/api\/server\/\" target=\"_blank\" rel=\"noopener\">TrueConf Server API v3<\/a> to implement video communication directly in a browser for telemedicine purposes without authentication on <a href=\"https:\/\/trueconf.com\/products\/server\/video-conferencing-server.html\" target=\"_blank\" rel=\"noopener\">TrueConf Server<\/a>. This approach simplifies users\u2019 interaction with a doctor.<\/p>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">In the context of telemedicine, the following implementation options are possible:<\/p>\n<ul class=\"ui-list ui-list--medium ui-mb-sm-1 ui-mt-xs-3\">\n<li class=\"ui-list__item ui-list__item--disc\"><a href=\"https:\/\/trueconf.com\/docs\/server\/en\/admin\/accounts\/#group-call\" target=\"_blank\" rel=\"noopener\">Automatically connect<\/a> a patient with one of available medical workers<\/li>\n<li class=\"ui-list__item ui-list__item--disc\">Create a scheduled conference on the website and add an event to the calendar<\/li>\n<li class=\"ui-list__item ui-list__item--disc\">Create a chat with a doctor so that this chat can be turned into a video conference.<\/li>\n<\/ul>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">Below, we will show how to set up direct <a href=\"https:\/\/trueconf.com\/blog\/knowledge-base\/how-to-connect-a-guest-to-a-conference-directly\" target=\"_blank\" rel=\"noopener\">guest access<\/a> to a conference. Guests are participants who do not have an account on your video conferencing server. Keep in mind that in this scenario, neither doctors nor patients need an account on the server.<\/p>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">In our example, we will use a guest connection from a browser via <a href=\"https:\/\/trueconf.com\/blog\/wiki\/webrtc\" target=\"_blank\" rel=\"noopener\">WebRTC<\/a>, since this option can be easily integrated into any website. If necessary, you can also use a connection via a <a href=\"https:\/\/trueconf.com\/downloads\" target=\"_blank\" rel=\"noopener\">client application<\/a>.<\/p>\n<h2 id=\"preconfig\" class=\"h4--main h4--thick black-text ui-mb-xs-3 ui-mt-md-1\">Preconfiguration of TrueConf Server<\/h2>\n<ul class=\"ui-list ui-list--medium ui-mb-sm-1 ui-mt-xs-3\">\n<li class=\"ui-list__item ui-list__item--num\">\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">First, open the control panel, go to the Dashboard \u2192 Summary, and check if there is the required number of guest connections in your license. In this case, a patient can be logged in as a guest while the doctor will be authenticated as a user registered on the server.<\/p>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">If you are using TrueConf Server Free, you can create public conferences with one guest connection. If you need to increase the number of guest connections, contact our <a href=\"https:\/\/trueconf.com\/company\/contacts.html\" target=\"_blank\" rel=\"noopener\">sales team<\/a> to purchase this extension or request a free trial for up to 3 weeks.<\/p>\n<\/li>\n<li class=\"ui-list__item ui-list__item--num\">Set up an HTTPS connection to work with the API.<\/li>\n<\/ul>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">Next, you can use various API methods over OAuth 2.0 protocol. Learn more about how to set up interaction with TrueConf Server over this protocol in our article \u201c<a href=\"https:\/\/trueconf.com\/blog\/knowledge-base\/how-to-get-started-with-trueconf-api.html\" target=\"_blank\" rel=\"noopener\">How to get started with TrueConf API<\/a>\u201d.<\/p>\n<h2 id=\"step-one\" class=\"h4--main h4--thick black-text ui-mb-xs-3 ui-mt-md-1\">Step 1: Create a public conference<\/h2>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">By using the <a href=\"https:\/\/developers.trueconf.com\/api\/server\/#api-Conferences-CreateConference\" target=\"_blank\" rel=\"noopener\">Create Conference method<\/a>, create a new video conference and set the following required parameters:<\/p>\n<ul class=\"ui-list ui-list--medium ui-mb-sm-1 ui-mt-xs-3\">\n<li class=\"ui-list__item ui-list__item--disc\"><code>\u201cid\u201d: \u201cConference_ID\u201d<\/code> \u2013 the conference ID which makes it easier to join the meeting;<\/li>\n<li class=\"ui-list__item ui-list__item--disc\"><code>\u201ctopic\u201d<\/code> \u2013 the conference name;<\/li>\n<li class=\"ui-list__item ui-list__item--disc\"><code>\u201ctype\u201d: 0<\/code> \u2013 conference mode, in our case, \u201cAll on screen\u201d mode is selected;<\/li>\n<li class=\"ui-list__item ui-list__item--disc\"><code>\u201cowner\u201d: \u201cuser1@server.name\u201d<\/code> &#8211; the owner (if you are adding the doctor as an authenticated user, enter the doctor&#8217;s <a href=\"https:\/\/trueconf.com\/docs\/server\/en\/admin\/users\/#user-id\" target=\"_blank\" rel=\"noopener\">TrueConf ID;<\/a> (username))<\/li>\n<li class=\"ui-list__item ui-list__item--disc\"><code>\u201cmax_participants\u201d: 2<\/code> &#8211; the maximum number of participants \u2013 2;<\/li>\n<li class=\"ui-list__item ui-list__item--disc\"><code>{\u201ctype\u201d: -1}<\/code> \u2013 conference schedule \u2013 you can select a different value, if necessary. In our case, we will use a virtual room so that the conference can be created on demand at any time;<\/li>\n<li class=\"ui-list__item ui-list__item--disc\"><code>\u201callow_guests\u201d: true<\/code> \u2013 the parameter which determines whether guests are allowed to join the conference;<\/li>\n<li class=\"ui-list__item ui-list__item--disc\"><code>\u201callow_only_planned_participants\u201d:false<\/code> \u2013 conference type \u2013 public;<\/li>\n<li class=\"ui-list__item ui-list__item--disc\"><code>\u201cstate\u201d: \u201crunning\u201d<\/code> \u2013 the conference state at the time of creation; in our case, we are creating a conference that starts running immediately.<\/li>\n<\/ul>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">As a result, the following Conference object will be passed to the request body:<\/p>\n<pre class=\"lang:default decode:true \" >\u201cid\u201d: \u201cConference_ID\u201d,\r\n     \"type\": 0,\r\n     \"topic\": \"Conference name\",\r\n     \"owner\": \"user1@server.name\",\r\n     \"max_podiums\": 2,\r\n     \"max_participants\": 2,\r\n     \"schedule\": {\"type\": -1},\r\n     \"allow_guests\": true,\r\n     \"rights\": {\r\n          chat_send: true,\r\n          chat_rcv: true,\r\n          slide_show_send: true,\r\n          slide_show_rcv: true,\r\n          white_board_send: true,\r\n          white_board_rcv: true,\r\n          file_transfer_send: true,\r\n          file_transfer_rcv: true,\r\n          desktop_sharing: true,\r\n          recording: true,\r\n          audio_send: true,\r\n          audio_rcv: true,\r\n          video_send: true,\r\n          video_rcv: true\r\n     },\r\n     \"state\": \"running\",\r\n     \"recording\": 1,\r\n }\r\n<\/pre>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">In response, you\u2019ll get the JSON version of the <a href=\"https:\/\/developers.trueconf.com\/api\/server\/en\/#api-Objects-Conference\" target=\"_blank\" rel=\"noopener\">conference object<\/a> you\u2019ve created. In this case, the <a href=\"https:\/\/trueconf.com\/blog\/wiki\/conference-id\" target=\"_blank\" rel=\"noopener\">conference ID<\/a> will be generated automatically if the user did enter a custom ID, e.g., <b>0987654321<\/b>.<\/p>\n<div class=\"accent-note accent-note--line accent-note--special ui-mb-sm-1 ui-mt-xs-3\">\n<p class=\"primary-medium-text\">\nPlease note that if a doctor joins as a guest, you have to use a separate TrueConf Server account with conference owner privileges.\n<\/p>\n<\/div>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">If you need to create a scheduled conference, use the <a href=\"https:\/\/developers.trueconf.com\/api\/server\/#api-Objects-Schedule\" target=\"_blank\" rel=\"noopener\">Schedule object<\/a>. It has to include  the following parameters:<\/p>\n<ul class=\"ui-list ui-list--medium ui-mb-sm-1 ui-mt-xs-3\">\n<li class=\"ui-list__item ui-list__item--disc\">Launch type 1 (one-time event);<\/li>\n<li class=\"ui-list__item ui-list__item--disc\">Start time in the <a href=\"https:\/\/www.unixtimestamp.com\/\" target=\"_blank\" rel=\"noopener\">Unix timestamp<\/a> format;<\/li>\n<li class=\"ui-list__item ui-list__item--disc\">Session duration (in seconds).<\/li>\n<\/ul>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">For example, when scheduling a 30-minute consultation for January 1, 2027, at 12:00 PM Moscow Time (GMT+3), we will get the following Schedule object that will be sent in the request body:<\/p>\n<pre class=\"lang:default decode:true \" >\"schedule\":{\r\n    \"type\":1,\r\n    \"start_time\":1798794000,\r\n    \"duration\":1800\r\n  }\r\n<\/pre>\n<h2 id=\"step-two\" class=\"h4--main h4--thick black-text ui-mb-xs-3 ui-mt-md-1\">Step 2: Generate links to connect guests automatically<\/h2>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">You can now create and provide a patient with a link to automatically join a video consultation. In this case, you can get names, e.g., from the patient\u2019s profile on the website of the medical service provider.<\/p>\n<ul class=\"ui-list ui-list--medium ui-mb-sm-1 ui-mt-xs-3\">\n<li class=\"ui-list__item ui-list__item--num\">Get authorization data using the GET method <a href=\"https:\/\/developers.trueconf.com\/api\/server\/#api-Software_Clients-GetClientList\" target=\"_blank\" rel=\"noopener\">Software_Clients \u2013 Get Client List<\/a>.<\/li>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">And specify the following parameters:<\/p>\n<ul class=\"ui-list ui-list--medium ui-mb-sm-1 ui-mt-xs-3\">\n<li class=\"ui-list__item ui-list__item--disc\"><code>call_id: 0987654321<\/code> \u2014 the ID of the <a href=\"#step-one\">created conference<\/a><\/li>\n<li class=\"ui-list__item ui-list__item--disc\"><code>case: join_conference_button<\/code> \u2013 the generation of direct links  needed for joining the conference from client applications.<\/li>\n<li class=\"ui-list__item ui-list__item--disc\"><code>user: 2$Ian Taylor*Ian Taylor<\/code> &#8211; The guest&#8217;s name  displayed during the conference. The $ symbol is required. There are two ways to authenticate a guest when connecting via TrueConf API:<\/li>\n<ul class=\"ui-list ui-list--medium ui-mb-sm-1 ui-mt-xs-3\">\n<li class=\"ui-list__item ui-list__item--disc\"><code>2$Ian Taylor*Ian Taylor<\/code> &#8211; the <a href=\"https:\/\/developers.trueconf.com\/api\/server\/#api-Software_Clients-GetClientList\" target=\"_blank\" rel=\"noopener\">2$ parameter<\/a> allows you to manually specify the guest\u2019s TrueConf ID. This option is helpful because you don\u2019t need to retrieve the ID from the server after connecting to a conference. However, if there are multiple users named Ian Taylor, you\u2019ll need to ensure the ID is unique, for example by using suffixes or hashes.<\/li>\n<li class=\"ui-list__item ui-list__item--disc\"><code>$Ian Taylor<\/code> &#8211; a parameter for which a unique ID is automatically generated and returned in the response to the request.<\/li>\n<\/ul>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">In our example, the query will look like this:<\/p>\n<pre class=\"lang:default decode:true \" >https:\/\/video.company.com\/api\/v3.3\/software\/clients?call_id=0987654321&amp;case=join_conference_button&amp;user=2$Ian Taylor*Ian Taylor<\/pre>\n<\/ul>\n<li class=\"ui-list__item ui-list__item--num\">To embed the conference window in your website, find the section with the property <code>\u201cname\u201d: \u201cTrueConf Web\u201d<\/code> in the JSON response. Copy the <code>iframe<\/code> tag from it. Before pasting, replace <code>\/\/<\/code> with <code>\/<\/code> in the frame URL. Below is an example of a response with the <code>iframe<\/code> fragment highlighted:<\/li>\n<pre class=\"lang:default decode:true \" >{\r\n  \"name\": \"TrueConf Web\",\r\n  \"type\": \"web\",\r\n  \"platform\": \"webrtc\",\r\n  \"download_url\": \"\",\r\n  \"download_urls\": null,\r\n  \"market_url\": \"\",\r\n  \"web_url\": \"https:\/\/video.company.com\/webrtc\/0987654321#login=*guest*%D0%98%D0%B2%D0%B0%D0%BD%20%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2&amp;token=$29cc834f607b1bffd0d5e68e47b4ead16*1619898725*641aad7d9e1e1a674416e16813939633&amp;lang=auto\",\r\n  \"iframe\": \"&lt;iframe src=\\\"https:\/\/video.company.com\/webrtc\/0987654321#login=*guest*%D0%98%D0%B2%D0%B0%D0%BD%20%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2&amp;token=$29cc834f607b1bffd0d5e68e47b4ead16*1619898725*641aad7d9e1e1a674416e16813939633&amp;lang=auto\\\" allowfullscreen=\\\"allowfullscreen\\\" allow=\\\"microphone; camera; autoplay; display-capture\\\" &gt;&lt;\\\\iframe&gt;\"\r\n}\r\n<\/pre>\n<\/ul>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">Alternative connection options:<\/p>\n<ul class=\"ui-list ui-list--medium ui-mb-sm-1 ui-mt-xs-3\">\n<li class=\"ui-list__item ui-list__item--num\">The value of the <b>web_url<\/b> parameter is a link used to automatically connect a participant to an online consultation from a browser.<\/li>\n<li class=\"ui-list__item ui-list__item--num\">The JSON file also includes the \u201c<b>deeplinks<\/b>\u201d object with links that are needed for joining the meeting from client applications. The \u201c<b>default<\/b>\u201d link can be used for joining either from TrueConf desktop applications (Windows, Linux, macOS) or from TrueConf for iOS\/iPadOS. The \u201c<b>android<\/b>\u201d link will be used by TrueConf for Android\/Android TV.<\/li>\n<pre class=\"lang:default decode:true \" >\"deeplinks\": {\r\n       \"default\": \"trueconf:\\\\c\\\\5016799639@video.company.com%23vcs&amp;h=172.18.246.126,172.17.0.1&amp;force=1&amp;templogin=1&amp;login=*guest*%D0%98%D0%B2%D0%B0%D0%BD%20%D0%A1%D1%82%D0%B5%D0%BF%D0%B0%D0%BD&amp;password=$291bcfe8bfc567822b4ff133c1b668fb7*1671525797*377ee8856b0404911fdeed524854d198&amp;encrypt=0&amp;autoclose=1\",\r\n       \"android\": \"intent:\\\\c\\\\5016799639%40video.company.com%23vcs%26h%3d172.18.246.126,172.17.0.1%26force%3d1%26templogin%3d1%26login%3d*guest*%D0%98%D0%B2%D0%B0%D0%BD%20%D0%A1%D1%82%D0%B5%D0%BF%D0%B0%D0%BD%26password%3d$291bcfe8bfc567822b4ff133c1b668fb7*1671525797*377ee8856b0404911fdeed524854d198%26encrypt%3d0%26autoclose%3d1#Intent;scheme=trueconf;package=com.trueconf.videochat;end\"\r\n   } <\/pre>\n<li class=\"ui-list__item ui-list__item--num\">It is also necessary to replace double slashes with single slashes; so the links will look in this way: <\/li>\n<pre class=\"lang:default decode:true \" >trueconf:\\c\\[ConferenceID]@[server_address]%23vcs&amp;h=[server_address]&amp;force=1&amp;templogin=1&amp;login=*guest*[guest_login]&amp;password=$[password]&amp;encrypt=0&amp;autoclose=1<\/pre>\n<\/ul>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">If the TrueConf client application is installed on a user\u2019s device, it will be launched automatically when the link is clicked, and a user will join the meeting.<\/p>\n<div class=\"accent-note accent-note--line accent-note--special ui-mb-sm-1 ui-mt-xs-3\">\n<p class=\"primary-medium-text\">\nPlease note that all links generated by this request are <b>temporary<\/b>, and for security reasons, they expire after <b>1 minute<\/b>. Therefore, you must connect immediately after they are generated; for example, you can generate them directly when you click the \u201cJoin\u201d button that you add to your website.\n<\/p>\n<\/div>\n<h2 id=\"step-three\" class=\"h4--main h4--thick black-text ui-mb-xs-3 ui-mt-md-1\">Step 3: Join a conference call<\/h2>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">When you get the <code>iframe<\/code> element, all that remains is to start the conference and join it. To start the conference, use the <a href=\"https:\/\/developers.trueconf.com\/api\/server\/#api-Conferences-RunConference\" target=\"_blank\" rel=\"noopener\">Run Conference<\/a> API request and include the conference ID in it.<\/p>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\"><code>https:\/\/server.name\/api\/v3.11\/{conference_id}\/run<\/code><\/p>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">As soon as the conference has started, users will be able to join this meeting either via the <code>iframe<\/code> link they received or via a direct link.<\/p>\n<h3 id=\"features\" class=\"h5--main h5--thick black-text ui-mb-xs-3 ui-mt-md-1\">Features for managing scheduled conferences<\/h3>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">If you choose to create scheduled conferences, you can add them to the patient\u2019s and doctor\u2019s personal calendars so that participants don\u2019t miss the video consultation. To do it, provide both participants with calendar event integration links by retrieving them via the <a href=\"https:\/\/developers.trueconf.ru\/api\/server\/#api-Conferences-ConferenceCalendars\" target=\"_blank\" rel=\"noopener\">GET Conference Calendars<\/a> request. In response, you will receive a JSON object containing links that are needed for adding events to Google and Outlook calendars. Additionally, you will receive an ics file for other services.<\/p>\n<p class=\"primary-medium-text ui-mb-sm-1 ui-mt-xs-3\">When it\u2019s time for a video consultation to start, a conference will start automatically and the doctor will receive a corresponding call. The patient will need to follow the link added to the calendar and will immediately join an event under his\/her name.<\/p>\n<div class=\"accent-note accent-note--line ui-mb-sm-1 ui-mt-xs-3\">\n<p class=\"primary-medium-text\">\nTo check your event, you can follow this link in your browser. If previously you did not enable access to audio and video devices, then you\u2019ll see the microphone and camera setup window before connecting to the conference.\n<\/p>\n<\/div>\n<div class=\"accent-note accent-note--line ui-mb-sm-1 ui-mt-xs-3\">\n<p class=\"primary-medium-text\">\nNote!<br \/>\nThis method works correctly only when a guest joins a scheduled conference after it has started, as only the owner can join the meeting before it starts.\n<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In some cases it is necessary to host a conference directly on a website. For example, in telemedicine settings, a patient can communicate with a doctor through a hospital website without installing any third-party software. The goal is to create a conference for communicating with a healthcare worker so that a user can join this [&hellip;]<\/p>\n","protected":false},"author":45,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[260],"tags":[246],"class_list":["post-17610","post","type-post","status-publish","format-standard","hentry","category-knowledge-base","tag-api-and-sdk","wpautop"],"_links":{"self":[{"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/posts\/17610","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/users\/45"}],"replies":[{"embeddable":true,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/comments?post=17610"}],"version-history":[{"count":27,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/posts\/17610\/revisions"}],"predecessor-version":[{"id":45911,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/posts\/17610\/revisions\/45911"}],"wp:attachment":[{"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/media?parent=17610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/categories?post=17610"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trueconf.com/blog\/wp-json\/wp\/v2\/tags?post=17610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}