Skip to main content

💠 ASP.NET (C#) example

using System;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

public class BbbCreateWithOverride
{
static string Endpoint = "https://bbb.example.com/bigbluebutton/api";
static string Secret = "YOUR_SHARED_SECRET";

static string Sha1(string s)
{
using var sha = SHA1.Create();
var bytes = sha.ComputeHash(Encoding.UTF8.GetBytes(s));
var sb = new StringBuilder();
foreach (var b in bytes) sb.Append(b.ToString("x2"));
return sb.ToString();
}

public static async Task RunAsync()
{
var qs = new StringBuilder();
qs.Append("name=").Append(Uri.EscapeDataString("Demo with Overrides"));
qs.Append("&meetingID=demo-123");
qs.Append("&attendeePW=ap");
qs.Append("&moderatorPW=mp");
qs.Append("&allowOverrideClientSettingsOnCreateCall=true");

var checksum = Sha1("create" + qs + Secret);
var url = $"{Endpoint}/create?{qs}&checksum={checksum}";

var overrideJson =
"{\"public\":{\"app\":{\"appName\":\"Greenlight\",\"helpLink\":\"greenlight.example.com\"}," +
"\"defaultSettings\":{\"application\":{\"autoJoin\":true,\"askForConfirmationOnLeave\":false}," +
"\"user\":{\"userSettingsStorage\":\"sessionStorage\",\"application\":{\"overrideLocale\":\"en\"}}}}}";

var xmlBody = $"<modules><module name=\"clientSettingsOverride\"><![CDATA[{overrideJson}]]></module></modules>";

using var http = new HttpClient();
var content = new StringContent(xmlBody, Encoding.UTF8, "application/xml");
var resp = await http.PostAsync(url, content);
var xml = await resp.Content.ReadAsStringAsync();
Console.WriteLine(xml);
}
}