Orchestrator configuration

Environmental variables at Docker

Application configuration

ENV VariableDefault valueTypeDescriptionNote/Example
PAGE_URLrequiredstringDeployment url without training slashhttps://foo.bar.com
APP_SECRETrequiredstringRandom string used as a JWT secret
COOKIE_DOMAINrequiredstringDomain to set cookies
MONGODB_CONNECTION_STRINGrequired when using MongoDBstringDB connection string
MONGODB_DBextracted from connection stringOverride MongoDB database name
COSMOSDB_CONNECTION_STRINGrequired when using CosmosDBstringDB connection string
COSMOSDB_DBrequired when using CosmosDBstringDB database name
HSTS_MAX_AGE2592000numberMax age header for HSTS
X_FRAME_OPTIONSDENYstringAllow using chat from an iframeSAMEORIGIN
SENTRY_BACKEND_DSNstringSentry DSN to report exceptions on backend
SENTRY_FRONTEND_DSNstringSentry DSN to report exceptions on frontend
APPINSIGHTS_INSTRUMENTATIONKEYstringEnables Azure Application Insights error reporting
VERBOSE_REQUEST_LOGfalsebooleanEnables logging of request contents and responseshas performance impacts
HIDE_VERBOSE_ERRORStruestringReplaces user friendly error responses with generic "API Error" messagestack traces are always hidden
JSON_CONFIGURATION{}stringStatic orchestrator configuration JSONdescribed below
ALLOW_CORS_ORIGINS*string[]List of allowed CORS originsuse , as separator

Default orchestrator configuration

Following configuration is used, when no/empty JSON_CONFIGURATION is provided.

{
"pages": [
{ "id": "web", "primaryAppId": "bot" }
],
"apps": [
{ "id": "bot" }
],
"appToPage": [
{ "appId": "bot", "pageId": "web" }
]
}

Page Configuration

names of pages are transformed according to following example: fooBar--name0 to FOO_BAR_NAME0 (camel case to snake case except numbers, all foreign characters to single underscores)

Common options

ENV VariableDefault valueTypeDescriptionConfiguration propertyNote/Example
PAGE_{page.id}_PRIMARY_APP_IDstringDefault application to dispatch a threadprimaryAppId
PAGE_{page.id}_CHANNEL_NAMEwbaichatstringChannel typechannelNamewbaichat, botservice, facebook, api, vocalls
PAGE_{page.id}_CLIENT_IDstringClient identification, when the channel is connected behind messaging serviceclientId
PAGE_{page.id}_CLIENT_SECRETstringClient secret, when the channel is connected behind messaging serviceclientSecret
PAGE_{page.id}_START_ACTION_PAYLOADstringPostback payloadstartActionPayloadsupported by botservice, and vocalls (inbound call)
PAGE_{page.id}_LOAD_USER_TO_CONTEXT_PROPstringIf chanel provides user data, it's loaded into this proploadUserToContextPropsupported by botservice, and vocalls
PAGE_{page.id}_API_URLstringAPI url for services like vocalls, facebook etc.apiUrlhttps://vocalls.cz/calls
PAGE_{page.id}_TOKENstringToken for APItoken
PAGE_{page.id}_DEFAULT_VOICE_CONTROL_LANGUAGEcs-CZstringVoice languagedefaultVoiceControl.language
PAGE_{page.id}_DEFAULT_VOICE_CONTROL_VOICEstringVoice typedefaultVoiceControl.voicecs-CZ-AntoninNeural
PAGE_{page.id}_DEFAULT_VOICE_CONTROL_SPEED1numberVoice speeddefaultVoiceControl.speed0-2 ! Google TTS doesn't support values lower than 0.5
PAGE_{page.id}_DEFAULT_VOICE_CONTROL_PITCH1numberVoice pitchdefaultVoiceControl.pitch0-2 ! Google TTS doesn't support values lower than 0.5
PAGE_{page.id}_DEFAULT_VOICE_CONTROL_VOLUME1numberVoice volumedefaultVoiceControl.volume0-2 ! Google TTS doesn't support values lower than 0.5
PAGE_{page.id}_CALL_ACTION_PAYLOADS_OUTBOUNDstringOutbound call payloadcallActionPayloads.outboundBot is calling to someone
PAGE_{page.id}_CALL_ACTION_PAYLOADS_DECLINEDstringDeclined call payloadcallActionPayloads.declinedUser didn't accept the call
PAGE_{page.id}_CALL_ACTION_PAYLOADS_HUNGUPstringCall hungup payloadcallActionPayloads.hungupUser hung up the call
PAGE_{page.id}_CALL_ACTION_PAYLOADS_DIALstringDial payload actioncallActionPayloads.dialdial needs payload data data.to = PHONE_NUMBER
PAGE_{page.id}_CALL_ACTION_PAYLOADS_HANGUPstringHangup payloadcallActionPayloads.hangupWill hangup the call

Web chat options

ENV VariableDefault valueTypeDescriptionConfiguration propertyNote/Example
PAGE_{page.id}_ALLOW_DOMAINSnullstringDefault application to dispatch a threadallowDomains"wingbot.ai, skoda-auto.cz"
PAGE_{page.id}_ALLOW_WEAK_AUTHtruebooleanDisables server-side cookie checkallowWeakAuth
PAGE_{page.id}_SESSION_EXPIRATION_SECONDS7 * 24 * 3600numberSets expiration of frontend token, so it resets the conversation then.sessionExpirationSeconds
PAGE_{page.id}_PUBLIC_CONTEXT_PROPSstringList of thread context variables published to frontendpublicContextProps"foo, bar"
PAGE_{page.id}_RESET_ON_CONTEXT_CHANGE_PROPSstringWhen contents of any provided variable changes, the chat will start over. (null or undefined to any is not a change)resetOnContextChangeProps
PAGE_{page.id}_OAUTH_CLIENT_IDstringOAuth client IDoauth.clientId
PAGE_{page.id}_OAUTH_CLIENT_SECRETstringOAuth client secretoauth.clientSecret
PAGE_{page.id}_OAUTH_AUTHORIZATION_ENDPOINTstringOAuth client authorization endpointoauth.authorizationEndpoint
PAGE_{page.id}_OAUTH_TOKEN_ENDPOINTstringOAuth token endpointoauth.tokenEndpoint
PAGE_{page.id}_OAUTH_SCOPEopenidstringOAuth requested scopeoauth.scope
PAGE_{page.id}_OAUTH_RESPONSE_TYPEcodestringOAuth requested scopeoauth.responseType
PAGE_{page.id}_OAUTH_STORE_USER_ID_AT_CONTEXT_PROPuserIdstringOAuth - stores user ID after successful authorization at a thread context variableoauth.storeUserIdAtContextProp
PAGE_{page.id}_OAUTH_STORE_AUTH_RESULT_AT_CONTEXT_PROPauthstringOAuth - stores contents of ID token at a thread context variableoauth.storeAuthResultAtContextProp
PAGE_{page.id}_OAUTH_BIND_THREAD_TO_SUBJECTbooleanOAuth - each user ID will have a single conversationoauth.bindThreadToSubject

App Configuration

names of pages are transformed according to following example: fooBar--name0 to FOO_BAR_NAME0 (camel case to snake case except numbers, all foreign characters to single underscores)

ENV VariableDefault valueTypeDescriptionConfiguration propertyNote/Example
APP_{app.id}_CHANNEL_NAMEapistringChannel typechannelNameapi
APP_{app.id}_OPTIONS_URLrequiredstringChatbot application endpoint addressoptions.url
APP_{app.id}_OPTIONS_SECRETrequiredstringChatbot application secretoptions.secret
APP_{app.id}_OPTIONS_TLS_KEYstringUse client certificate private keyoptions.tls.key
APP_{app.id}_OPTIONS_TLS_CERTstringUse client certificateoptions.tls.cert
APP_{app.id}_OPTIONS_TLS_CAstringVerify client certificate with root certificateoptions.tls.capem format
APP_{app.id}_OPTIONS_TLS_FINGER_PRINTstringVerify client certificate finger printoptions.tls.fingerPrintcomma separated
APP_{app.id}_OPTIONS_TLS_SUBJECT_CNstringVerify client certificate subject CNoptions.tls.subjectCNcomma separated
APP_{app.id}_OPTIONS_TLS_SUBJECT_OstringVerify client certificate subject Ooptions.tls.subjectOcomma separated
APP_{app.id}_OPTIONS_TLS_ISSUER_CNstringVerify client certificate issuer CNoptions.tls.issuerCNcomma separated
APP_{app.id}_OPTIONS_TLS_ISSUER_OstringVerify client certificate issyer Ooptions.tls.issuerOcomma separated
APP_{app.id}_SUBSCRIPTIONS_MESSAGEStruebooleanSend messages to application's webhooksubscriptions.messages
APP_{app.id}_SUBSCRIPTIONS_POSTBACKStruebooleanSend postbacks to application's webhooksubscriptions.postbacks
APP_{app.id}_SUBSCRIPTIONS_HANDOVERStruebooleanSend handovers to application's webhooksubscriptions.handovers
APP_{app.id}_SUBSCRIPTIONS_CONTEXT_UPDATEStruebooleanSend thread context updates to application's webhooksubscriptions.contextUpdates
APP_{app.id}_SUBSCRIPTIONS_SENDER_ACTIONSfalsebooleanSend sender actions to application's webhooksubscriptions.senderActions
APP_{app.id}_SUBSCRIPTIONS_STANDBY_INCOMINGfalsebooleanSend all communication from channel to application's webhooksubscriptions.standbyIncomingwhen the application is not a thread owner
APP_{app.id}_SUBSCRIPTIONS_SENDER_ACTIONSfalsebooleanSend all communication from other applications to application's webhooksubscriptions.standbyOutgoingwhen the application is not a thread owner
APP_{app.id}_SUBSCRIPTIONS_SENDER_ACTIONSfalsebooleanSend tracking events to application's webhooksubscriptions.tracking