# Say hi to Virtual Beings!

Getting your first virtual being up and running with Virbe takes literally minutes. In this documentation, we're sharing with you all you need to know to quickly get through the initial setup, configure hardware for a digital signage solution, or use our SDKs.

<div data-full-width="true"><figure><img src="/files/rccW5IhjWaoxPfRSks3u" alt=""><figcaption><p>A virtual being on a digital signage screen</p></figcaption></figure></div>

<figure><img src="/files/vFyQdKQKmFRuRivuOpmr" alt=""><figcaption><p>A virtual being on a website</p></figcaption></figure>

To save you time, we suggest you first go through **the basics including:**

1. Virbe Hub introduction and dashboard deployment:
   * [Virbe-hosted launch](/getting-started/introduction-to-virbe-platform/virbe-hosted-launch)
   * [Azure-hosted deployment](/getting-started/introduction-to-virbe-platform/azure-hosted-deployment)
2. Important dashboard configurations:
   * [Configurations](/dashboard-management/configurations)
   * [Profiles](/dashboard-management/profiles)
   * [Personas](/dashboard-management/personas)
3. To **learn more about touchpoints**, head out to:
   * [Metahuman Kiosk](/touchpoints/kiosk-apps/metahuman-kiosk)
   * [Web Widget](/touchpoints/web-integration)


# Introduction to Virbe platform

Virbe is an enterprise-ready platform for creating and managing AI-powered virtual beings. Our platform enables organizations to build sophisticated digital employees that can interact with customers across multiple channels while maintaining consistent knowledge and personality. This documentation provides a comprehensive guide to understanding, implementing, and optimizing your Virbe virtual beings.

## Platform Architecture

### Understanding the Hub

The Virbe Hub is your central workspace for managing all virtual beings in your organization. Here you can create, manage, and monitor all your virtual employees from one place.&#x20;

<figure><img src="/files/z8RQisTtRB55vBt3LzYx" alt=""><figcaption><p>Virbe Hub – home page</p></figcaption></figure>

The Hub's centralized approach offers several key advantages:

1. **Dashboards Management**\
   The Hub provides a single point of control for all your virtual beings through their dashboards. Instead of managing multiple disconnected systems, you can oversee your entire virtual workforce from one location. This centralization simplifies administration, reduces potential confusion, and ensures consistent governance across all virtual being deployments.
2. **Subscription and Payment Management** \
   The Hub centralizes all subscription and payment operations for your organization:

* Plan Management:
  * View and modify subscription plans
  * Track usage limits and thresholds
  * Monitor interaction quotas
  * Manage additional services
* Billing Administration:
  * Access current and past invoices
  * Track payment history
  * Manage payment methods

3. **Team Management**\
   The Hub provides a straightforward way to control access to your organization's virtual beings by managing your team members. You can easily add new team members or remove access when needed, ensuring your virtual being workspace remains secure and well-organized.

This granular control ensures that team members have appropriate access to the resources they need while maintaining security.

### Understanding the Dashboard

Each dashboard within your Hub represents a single virtual being use case. This one-to-one relationship between dashboards and use cases is a fundamental design principle that helps maintain clarity and purpose in your virtual being deployments.

<figure><img src="/files/2cUmtwi950rBBKWGIBj2" alt=""><figcaption><p>Virtual being dashboards in Virbe Hub</p></figcaption></figure>

<figure><img src="/files/Q1JO7UvfSwrsjzp47zGR" alt=""><figcaption><p>Virbe dashboard for a specific use case</p></figcaption></figure>

A dashboard consists of the following core components:

1. Profile Management
   * Create and manage deployment configurations
   * Configure channel-specific settings
   * Customize interface and behavior
   * Monitor performance metrics
   * Manage deployment status
2. Engine Configurations
   * Add and manage necessary engine configurations
   * Integrate with TTS, STT and AI engines
   * Manage the configuratinos in one place
3. Knowledge Base
   * Organize and store information
   * Manage documents
   * Integrate media assets
   * Update content dynamically
4. Data Tables
   * Store structured information
   * Manage real-time data access
   * Define data relationships
   * Ensure data accuracy
5. Conversation Flows
   * Design interaction patterns
   * Configure response logic
   * Manage user interactions
   * Set up integrations
   * Monitor conversation performance

Each component works in harmony to create a cohesive virtual being experience, ensuring consistent behavior and responses across all deployment channels while maintaining the specific requirements of each implementation context.

### Virbe dashboard deployment

Virbe offers **two streamlined paths to bring your virtual being to life**, depending on the unique needs of your business. Whether you're looking for a hassle-free, managed solution or you prefer to maintain control over your deployment, Virbe has you covered.

1. **Virbe-Hosted Solution**

**Quick launch with maximum simplicity**

**Our Virbe-hosted** options are designed for businesses looking for a **turnkey solution**. With just a few clicks, you can launch your virtual being directly on our platform.&#x20;

This option is perfect for those who want to:

* **Get started quickly** without the complexities of self-hosting.
* **Enjoy hassle-free maintenance.**

2. **Self-Hosting with Azure**

**Flexibility and control using your own resources**

For businesses that require more control over their virtual beings, deploying on your Azure cloud is the way to go.&#x20;

This path is ideal if you:

* **Prefer to manage your own hosting environment.**
* Need to **comply with specific data residency or regulatory requirements.**
* **Wish to leverage existing Azure services** and infrastructure for seamless integration.

Both paths are supported by detailed documentation, step-by-step guides, and best practices to ensure a smooth setup. Start with the path that best aligns with your business needs:

1. [**Virbe-Hosted Solution**](#virbe-hosted-solution): Dive into our guide on launching your virtual being on Virbe's platform.
2. [**Self-Hosting with Azure**](/getting-started/introduction-to-virbe-platform/azure-hosted-deployment): Follow our guide on deploying your virtual being using your Azure resources.


# Virbe-hosted launch

Launching Virtual Being as a Virbe-Hosted solution is designed for businesses looking for a turnkey solution. With just a few clicks, you can launch your virtual being directly on our platform.

Getting started with Virbe-hosted virtual beings is straightforward and efficient. By following these simple steps, you can have your virtual being up and running in no time:

### 1. Sign Up to the Virbe Platform

**Create Your Account**

Begin by visiting the[ Virbe website](https://virbe.ai/) and [**signing up for an account**](https://hub.virbe.app/signup)**.** You’ll need to provide some basic information to get started.

<figure><img src="/files/tudzAZWSag8ViqqNLoIv" alt=""><figcaption><p>Create account</p></figcaption></figure>

**Name Your Organization**

Once your account is created, it’s time to name your organization. This is how your team and your virtual beings will be identified on the Virbe platform.

<figure><img src="/files/tkS1TlK8qz1TklUneoog" alt=""><figcaption><p>Name your organization</p></figcaption></figure>

**Invite Team Members (optional)**

Collaboration is key. Invite your team members to join the platform so they can contribute to creating and managing your virtual being. You can add or remove team members at any time.

<figure><img src="/files/uf0xHUZBat0uDWFIgzMB" alt=""><figcaption></figcaption></figure>

### 2. Launch a New Being

**Getting Started**

After the initial setup of the account, you'll land in Virbe Hub – a place with an overview of all your virtual beings. Each virtual being created will have a dedicated dashboard launched, where you'll manage all the important parts of its operation.

<figure><img src="/files/3YDlJUESltnTMJXlzB8y" alt=""><figcaption><p>Virbe Hub Home: Empty</p></figcaption></figure>

At the beginning you won't have any virtual beings created yet (or hired, as we call it). To hire your first digital assistant, click on “Launch a new being”, which will start a straightforward 2-step process:

#### Step 1: Preferences

You will be prompted to select initial preferences for your virtual being. This includes under what domain it will be launched, its purpose, and information about conversational engine.

<figure><img src="/files/PNsb7fiTbUGJYmqBmkwH" alt=""><figcaption><p>Launching a new being: preferences</p></figcaption></figure>

#### Step 2: Select Plan

Choose a hosting plan that fits your needs. Virbe offers a variety of plans to accommodate businesses of all sizes. Consider factors like expected traffic, interaction complexity, and support needs when making your selection.

To view currently offered pricing plans, [refer to our website.](https://virbe.ai/get-started)

### 3. Wait for the launch to complete

After completing the setup, we'll launch all the resources necessary to bring the virtual being to life. This process typically takes a few minutes (up to 10). You can use this time to explore the Virbe platform or plan your virtual being’s first interactions.

Once the launching process is complete, you will see the status change from "Provisioning" to "Active" and  your new virtual being's dedicated dashboard will be ready.&#x20;

Use the dashboard to manage all the settings and capabilities of the virtual being, such as its appearance, voice, languages and, perhaps most importantly, configuring all its knowledge (you'll find more about it in the chapter about our [proprietary conversational engine Virbe AI Editor](broken://pages/fL10YAyRu1JxRtUiyRlc)).

Congratulations! Your virtual being is now live and ready to interact with your audience. Time to customize your virtual being! To read more on that, [go to the section on "Configuration"](/dashboard-management/dashboard-architecture).

<br>


# Azure-hosted deployment

Deploying the Virbe app from the Azure Marketplace is an easy way to integrate our technology into your cloud. Follow this guide for a smooth setup.

### 1. Log in or Sign Up to the Virbe Platform

The process of deploying Virbe app in your Azure resources starts in Virbe platform. Navigate to Virbe Hub: [**Log in**](https://hub.virbe.app/login) to your Virbe account or [**sign up** ](https://hub.virbe.app/signup)and create an organization if you don't have an account yet.

### **2. Launch a new being in Virbe Hub**

**Getting Started**

After the initial setup of the account, you'll land in Virbe Hub – a place with an overview of all your virtual beings. Each virtual being created will have a dedicated dashboard launched, where you'll manage all the important parts of its operation.

<figure><img src="/files/3YDlJUESltnTMJXlzB8y" alt=""><figcaption><p>Virbe Hub Home: Empty</p></figcaption></figure>

At the beginning you won't have any virtual beings created yet (or hired, as we call it). To hire your first digital assistant, click on “Launch a new being”, which will start a straightforward 2-step process:

#### Step 1: Preferences

You will be prompted to select initial preferences for your virtual being. This includes under what domain it will be launched, its purpose, and information about conversational engine.

<figure><img src="/files/PNsb7fiTbUGJYmqBmkwH" alt=""><figcaption><p>Launching a new being: preferences</p></figcaption></figure>

#### Step 2: Select Plan and save the license key

In this step, you need to choose a hosting variant first, using a tabs component above the plans. Make sure "Azure-hosted" option is selected. Then select a plan accordingly, you can start with a free Starter plan.&#x20;

<figure><img src="/files/1tytCguIxFpQMeWBHuqF" alt=""><figcaption><p>Azure-hosted plans in Virbe Hub</p></figcaption></figure>

Once you click on the plan, you will see a unique license key that you'll need on later stages directly in your Azure dashboard, **so make sure to copy it and store safely for later use.**

<figure><img src="/files/bmIWiQnPPOgl0m54PZ49" alt=""><figcaption><p>Select the plan and save the license key</p></figcaption></figure>

### **3. Deploy app in Azure Marketplace**

1. **Navigate to Virbe's app page in Azure Marketplace**: Once you've copied and saved the license key, process to Azure Marketplace by clicking on the "Continue to Azure" button. It will direct you to the [Virbe app page in Azure Marketplace.](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/virbespzoo1616744596310.virbe-dashboard?tab=Overview)
2. **Add Virbe App:** Once you've landed on the page of the Virbe app page, click the "Get it now" button.

<figure><img src="/files/vMibJDWoKQomQVyfeS6y" alt=""><figcaption><p>Virbe app page in Azure Marketplace</p></figcaption></figure>

**Deploying Your App**

1. **App Creation**: Upon clicking "Get It Now", a dialog box will appear. Input and verify your data and click "Continue" to proceed to app creation.<br>

   <figure><img src="/files/qipFzfVZn9Cv7wnF99je" alt=""><figcaption><p>Azure Marketplace account details dialog box</p></figcaption></figure>
2. **Create plan:** Confirm the selection of available Plan and click Create.\
   &#x20;

   <figure><img src="/files/GbUwjF7MrwtYXkv495of" alt=""><figcaption><p>Click "Create" next to selected plan</p></figcaption></figure>
3. **Configure the Basics**:
   * **Subscription and Resource Group**: Select your subscription and either choose an existing resource group or create a new one.
   * **Instance Details**: Select the desired region for your Virbe app deployment.
   * **Managed Application Details:** Provide a name for the application and the resource group<br>

     <figure><img src="/files/c8ho5zY8CwxsmoElIgnP" alt=""><figcaption><p>Configure basics of the Azure deployment</p></figcaption></figure>
4. **Configure the Virtual Machine (VM) Parameters**:
   * &#x20;You can adjust the parameters of your VM or use the default values.
5. **Configure AI Engine:**
   * **Enable Azure OpenAI models:** If you don't have an existing chatbot and will want to use LLM models with Virbe's virtual beings, **check this box and deploy LLM on Azure.**
   * **Configure AI deployment parameters:** Choose region and LLM model, **have in mind that availability of models depends on the region selected.** Then select an Embedding model for Knowledge Base as shown below.<br>

     <figure><img src="/files/pyHkqHVlrgoutzJ6LVzV" alt=""><figcaption><p>Enable OpenAI models for Virbe deployment</p></figcaption></figure>
6. **Virbe License:**
   * **Provide License Key:** Here you'll need to paste the License Key that was generated in Virbe platform upon creating new virtual being. If you don't have it saved yet, you can always go to your Virbe Hub and copy it again.<br>

     <figure><img src="/files/laDDsIgRySD7ghsrYQyA" alt=""><figcaption><p>Provide Virbe license key</p></figcaption></figure>

     <figure><img src="/files/8zo2ADvdmYCTLxEWgjbP" alt=""><figcaption><p>Copy the previously created license key from Virbe Hub </p></figcaption></figure>
7. **Review and Create**: After configuring all the above, go to the "Next" step or click "Review and Create" directly, Azure will validate your configuration. Once that's done, review all your settings, including the cost, then click "Create" button.&#x20;

   <figure><img src="/files/1NklIFeG6x6o4uceqxgh" alt=""><figcaption><p>Review and Create deployment</p></figcaption></figure>
8. **Deployment**: Once the deployment starts, you will see the status in your Azure dashboard, until it changes to "Complete".

   <figure><img src="/files/yyLZ7udJ0ZKRUtHf6v5T" alt=""><figcaption><p>Azure deployment in progress</p></figcaption></figure>

### 4. Wait for the launch to complete

Follow the on-screen instructions in Azure to monitor the deployment progress. You can also monitor the status of launching the being in Vurbe Hub. Once the deployment is complete and all the resources necessary to bring the virtual being to life are launched (which typically takes somewhere between 5 to 15 minutes), the virtual being's card in the Virbe Hub will turn green and the dashboard will become "Active.

<figure><img src="/files/cZzNEbuA0EHXbmamjsRQ" alt="" width="251"><figcaption><p>Active virtual being card in Virbe Hub</p></figcaption></figure>

Time to customize your virtual being! To read more on that, [go to the section on "Configuration"](/dashboard-management/dashboard-architecture).

Should you encounter any difficulties during the deployment process, please do not hesitate to reach out to us.


# Dashboard Architecture

A dashboard represents a single virtual being use case. This one-to-one relationship between dashboards and use cases is a fundamental design principle that helps maintain clarity and purpose.

A dashboard consists of the following core components:

1. [Overview](/dashboard-management/overview)
   * Dashboard Status
   * Subscription Information
   * Recent Issues
   * Profiles List & Status<br>

     <figure><img src="/files/sKn0PtP6VYahdtKgw4FG" alt=""><figcaption><p>Overview</p></figcaption></figure>
2. [Profiles](/dashboard-management/profiles)
   1. Configure channel-specific settings
   2. Customize interface and behavior
   3. Manage deployment\ <br>

      <figure><img src="/files/YtsbXKEdGbDXWKmXaBc3" alt=""><figcaption><p>Profile</p></figcaption></figure>
3. [Configurations](/dashboard-management/configurations)

   * Speech-to-Text Setup
   * Text-to-Speech Setup
   * AI Models Integration
   * External conversational AI engines

   <figure><img src="/files/hhRQ3yxAc1sfaGCfRpg8" alt=""><figcaption><p>Configurations</p></figcaption></figure>
4. [Personas](/dashboard-management/personas)
   * Avatar Management
   * Voice and Language Configuration
   * Personality Settings<br>

     <figure><img src="/files/4C7jcXPjzkGoPbSWccUd" alt=""><figcaption><p>Personas</p></figcaption></figure>
5. [Knowledge Base](/dashboard-management/knowledge-base)
   * Manage content to be used when generating responses
   * Collections and documents management<br>

     <figure><img src="/files/LZRxjaxKiaPVMG3Uhyao" alt=""><figcaption></figcaption></figure>
6. [Data Tables](/dashboard-management/data-tables)
   * Store structured information
   * Manage data in real-time
   * Ensure data accuracy<br>

     <figure><img src="/files/0x9ROZeb5ARsqILAWhkf" alt=""><figcaption><p>Data tables</p></figcaption></figure>
7. [Conversation Flows](/dashboard-management/conversation-flows)
   * Design conversational flows
   * Configure response logic
   * Set up integrations<br>

     <figure><img src="/files/2AIVDDJmXwPSj6kOqcol" alt=""><figcaption><p>Conversation flows</p></figcaption></figure>
8. Conversations
   * Conversation history
   * Human hand-over<br>

     <figure><img src="/files/sQTQ7Fk4aZCPFuAE1FWk" alt=""><figcaption><p>Conversation log with human handover</p></figcaption></figure>
9. Issues

   * Error Monitoring
   * System Notifications

   <figure><img src="/files/oUBFPEqRY2CW5tgfb94f" alt=""><figcaption></figcaption></figure>

Each component works in harmony to create a cohesive virtual being experience, ensuring consistent behavior and responses across all deployment channels while maintaining the specific requirements of each implementation context.

<br>


# Overview

The Overview section provides a comprehensive snapshot of your virtual being's status, subscription details, and deployment information.

Here you can monitor your virtual being's performance, manage profiles, and track any system issues.

<figure><img src="/files/VOLeUJUnBijBdFZM5yBL" alt=""><figcaption><p>Overview</p></figcaption></figure>

### Subscription Status

Your subscription information is displayed prominently at the top of the Overview section:

* **Subscription Status**: Shows whether your subscription is Active or Inactive
* **Interactions Counter**: Displays current usage and total available interactions (e.g., 3985/5000)
* **Plan Details**: Shows your current plan type (e.g., Pilot)
* **Important Dates**:
  * End date: When your current subscription period ends
  * Next billing: Your next payment date

### Recent Issues

The Recent Issues panel helps you stay informed about any system notifications or problems:

* **Issue Types**:
  * LLM engine issues (e.g., credential problems)
  * System updates and notifications
* Each issue includes:
  * Issue description
  * Current status
  * "See details" link for more information

### Profiles

The Profiles section shows all deployment configurations for your virtual being:

* **Profile List**: Shows all your configured profiles
* **Profile Information**:
  * Name and type (e.g., Web, Kiosk)
  * Status indicator (active/inactive
  * Management options (Edit, Delete, shortcut to Deployment details)
* **Create New Profile**: Button to add new deployment configurations

{% hint style="warning" %}
Before customizing your first profile, it's recommended to make sure that you have set up all the engine configurations that are necessary for any touchpoint deployment to work, that is: Speech-to-Text, Text-to-Speech engines and AI model (if you want to use LLM capabilities for response generation). Some of those may be preconfigured for you (applicable for [Virbe-hosted dashboards)](/getting-started/introduction-to-virbe-platform/virbe-hosted-launch), but others may require you to input unique credentials or API keys (especially if you're [hosting the dashboard on your own](/getting-started/introduction-to-virbe-platform/azure-hosted-deployment)). \
Read more in the [Configurations](/dashboard-management/configurations) section.
{% endhint %}

### Best Practices

* Regularly monitor your interaction usage to avoid reaching limits
* Check Recent Issues section daily for potential problems
* Keep track of subscription end dates to ensure continuous service
* Maintain active profiles and remove unused ones for better organization


# Profiles

Profiles are deployment configurations that allow you to adapt your virtual being for different channels while maintaining its core identity and knowledge. While a dashboard represents one virtual being (like a customer service assistant), **profiles let you deploy this assistant across multiple touchpoints** – each optimized for its specific environment.

<figure><img src="/files/rH0Gg1iBJpZiZHpme1F8" alt=""><figcaption><p>Profiles list in Virbe Dashboard</p></figcaption></figure>

Each dashboard comes with a default "Dashboard Web Preview" profile - a fully functional web implementation used for testing your conversation flows directly in the "Conversation flows" tab. For additional deployments, you can create new profiles customized for specific touchpoints.

Think of profiles as specialized interfaces for your virtual being. **The same assistant can interact through a web chat widget on your website, or through a life-sized Metahuman avatar in your physical store.** You can create multiple profiles of the same touchpoint type, as per the limit in your subscription plan. Each profile shares the dashboard's core knowledge base and conversation flows, but can be customized for its unique deployment context, for example:

* Web widget profiles can be chat-only or include stylized avatars
* Kiosk profiles use photorealistic Metahuman avatars for in-person interactions
* Each profile can have specific interaction patterns (voice, text, or both)
* Settings are optimized for the deployment environment (public spaces vs personal devices)

{% hint style="info" %}
Detailed implementation guidelines for each touchpoint type are available in the [Touchpoints](/touchpoints/kiosk-apps) section.
{% endhint %}

{% hint style="warning" %}
Before customizing your first profile, it's recommended to make sure that you have set up all the engine configurations that are necessary for any touchpoint deployment to work, that is: Speech-to-Text, Text-to-Speech engines and AI model (if you want to use LLM capabilities for response generation). Some of those may be preconfigured for you (applicable for [Virbe-hosted dashboards)](/getting-started/introduction-to-virbe-platform/virbe-hosted-launch), but others may require you to input unique credentials or API keys (especially if you're [hosting the dashboard on your own](/getting-started/introduction-to-virbe-platform/azure-hosted-deployment)). \
Read more in the [Configurations](/dashboard-management/configurations) section.
{% endhint %}

There are three sections universal for all types of touchpoints (web or kiosk):

{% content-ref url="/pages/LALvvDlIyGuv34XDfI3D" %}
[General](/dashboard-management/profiles/general)
{% endcontent-ref %}

{% content-ref url="/pages/lOBLfElobNqy3G3HEtBe" %}
[Language](/dashboard-management/profiles/language)
{% endcontent-ref %}

{% content-ref url="/pages/mRHoLtY7bw85t3KmKmdb" %}
[Persona](/dashboard-management/profiles/persona)
{% endcontent-ref %}

The content of the remaining sections: (Settings and Deployment) vary depending on the touchpoint selected for this particular profile: Web widget or Metahuman kiosk.

{% content-ref url="/pages/oTmQAtNUrNFXEMmgVLHt" %}
[Settings](/dashboard-management/profiles/settings)
{% endcontent-ref %}

{% content-ref url="/pages/FioAGLluiXLPJ64QxQQb" %}
[Deployment](/dashboard-management/profiles/deployment)
{% endcontent-ref %}


# General

General settings establish core profile functionality and identity.

<figure><img src="/files/5csk6eHSiUKThaGQ7FYV" alt=""><figcaption><p>Profile General settings</p></figcaption></figure>

The key component is Additional Information – this lets you add specific context that guides LLM responses for this deployment. This context is used by LLM nodes in conversation flows when generating responses, helping maintain appropriate tone and content for each deployment scenario.

{% hint style="info" %}
For example, you might specify different interaction styles for a kiosk in a bank versus a banking website or mobile app, even though they use the same knowledge base.
{% endhint %}


# Language

Language configuration determines how your virtual being communicates across different channels.

<figure><img src="/files/FjsTm1NdhbAGNjBzTnYB" alt=""><figcaption><p>Profile Language settings</p></figcaption></figure>

Language configuration determines how your virtual being communicates across different channels. Each profile needs a default language setting that will be used as a fallback language for any speech recognition action.

{% hint style="warning" %}
All selected languages must be available and compatible with your configured STT engine. Make sure you select matching languages to ensure smooth interactions. If necessary, refer to the documentation of the selected STT provider. If at this point you haven't configured at least one STT engine, read more in [Configurations](/dashboard-management/configurations).
{% endhint %}


# Persona

Here you select which persona will embody the virtual being for that specific profile.

<figure><img src="/files/kQrk81bGyS6JZQTAPRF3" alt=""><figcaption><p>Profile persona setting</p></figcaption></figure>

{% hint style="info" %}
You'll find more about how to create, configure and manage personas in the dedicated section [Personas](/dashboard-management/personas).&#x20;
{% endhint %}

{% hint style="warning" %}
It's important to note that when creating the persona, the avatar must match your touchpoint type for proper deployment. You cannot use Metahuman avatars in web deployments, or web avatars in kiosk deployments.
{% endhint %}


# Settings

This section describes profile settings divided into touchpoints, as they are touchpoint-specific:

{% content-ref url="/pages/X32ugjmIARx152ugaMNh" %}
[Web widget profile settings](/dashboard-management/profiles/settings/web-widget-profile-settings)
{% endcontent-ref %}

{% content-ref url="/pages/Ro5ilYwhNhNRnOZyXlpI" %}
[Metahuman kiosk profile settings](/dashboard-management/profiles/settings/metahuman-kiosk-profile-settings)
{% endcontent-ref %}


# Web widget profile settings

### Teaser

The teaser message is the first point of contact with your users. It appears as a small text bubble next to your widget when collapsed. Choose a welcoming, engaging message that aligns with your virtual being's personality and encourages interaction.

<figure><img src="/files/LpcGOIyFt5XkqpqnzSAU" alt="" width="375"><figcaption><p>Teaser setting in Web widget profile settings</p></figcaption></figure>

<figure><img src="/files/WcohbNskFUJbwtnqywJB" alt="" width="350"><figcaption><p>What a collapsed web widget with a teaser looks like</p></figcaption></figure>

{% hint style="info" %}
**Best practice**: Keep the message short, friendly, and aligned with your use case (e.g., "Need help shopping?" for retail, "Questions about your account?" for banking).
{% endhint %}

### AI Disclaimer

Control transparency about AI usage in your virtual being. When enabled, users see a brief message explaining that they're interacting with an AI assistant. This setting helps meet ethical AI guidelines and manage user expectations.

<figure><img src="/files/c3c9g8d5lRgwDc1ptG8o" alt="" width="375"><figcaption><p>AI disclaimer field</p></figcaption></figure>

<figure><img src="/files/VpDc4mr0GNl4xJos5eAL" alt="" width="375"><figcaption><p>Web widget with disclaimer turned on</p></figcaption></figure>

### Conversation Start Settings

Define how proactive your virtual being should be. You have two auto-start options:

* **Page focused**: Conversation starts when a user actively views your webpage. Useful for immediate engagement but may be perceived as overwhelming.
* **Widget focused**: More subtle approach - conversation begins only when users show interest by interacting with the widget (hover or click).

<figure><img src="/files/VKgrGMpGJo5QFJXdCTWg" alt="" width="563"><figcaption><p>Conversation start settings</p></figcaption></figure>

Consider your users' context and preferences when choosing these settings.

### Conversation Signals Settings

These settings control how your widget communicates with the backend system:

* **Start signal**: Marks the beginning of a new conversation, enabling proper session tracking and analytics, and more importantly can be used in Conversation Flows to start processing of the conversation logic.
* **Interrupt signal**: Tracks when users manually stops response generation (voice or text) using the interrupt button. Default is on off, turning this on can be useful for synchronizing multiple widgets (very advanced setup), **however it requires being handled appropriately in conversation flows.**
* **Stop signal**: Records natural conversation endings, useful for analyzing complete interaction cycles.

<figure><img src="/files/KYhy57IGfCVPL3ijcW7k" alt="" width="563"><figcaption><p>Conversation signals settings</p></figcaption></figure>

These signals are crucial for:

* Proper conversational experience
* Analytics reporting

### Conversation Settings on Page Refresh

Manage conversation persistence across page reloads:

* **Always**: Forces new conversation on every refresh. Best for situations where each interaction should be fresh (e.g., public kiosks).
* **After \[X] minutes**: Balances persistence with session management. Useful for normal website interactions. Maximum time is 720 minutes.
* **Never**: Maintains conversation context across refreshes. Ideal for complex interactions where context is important.

<figure><img src="/files/eg8CO2DdX35jWjgY6kZl" alt="" width="563"><figcaption><p>Conversation settings on page refresh</p></figcaption></figure>

### Widget Configuration

Customize the interaction tools available to users:

**Core Communication Tools**:

* Show chat: Enables text conversation display
* Show text input: Allows typed responses
* Show recording button: Enables voice input

**Accessibility Features**:

* Show subtitles: Essential for hearing-impaired users or noisy environments
* Show mute button: Gives users audio control
* Muted on start: Respects user preference for quiet browsing

**Control Options**:

* Show reset button: Allows users to restart conversations if needed

<figure><img src="/files/S4lLJ9369mVAGcjnwXgu" alt="" width="563"><figcaption><p>Additional widget configuration</p></figcaption></figure>

### Customize 3D Scene

Create an appropriate environment for your 3D scene (whether or not it uses an avatar):

* **Ground color**: Sets the base surface color where avatar stands
* **Skybox color**: Creates atmosphere and depth in the 3D environment
* **Custom background**: Upload specific images for branded experiences

<figure><img src="/files/ldKNUm5Rococ0mDiskwC" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Be**st practice:** Choose neutral colors that don't compete with your avatar for attention.
{% endhint %}

### Customize Widget UI

Brand alignment and visual coherence, feature availability depends on the subscription plan:

* **Background color**: Main widget color
* **Text color**: Ensure good contrast with background
* **Accent color**: Highlights interactive elements
* **Logo options**: Control Virbe branding visibility

<figure><img src="/files/FyJpa91HjG2gDDkjY72B" alt="" width="563"><figcaption><p>Customize widget UI</p></figcaption></figure>

All colors should follow your brand guidelines while maintaining accessibility standards for readability.


# Metahuman kiosk profile settings

### Configuration Load

Controls the initial behavior of your kiosk application:

* **Auto connect on configuration load**: When enabled, automatically establishes connection with the server when the kiosk app starts. Recommended for public installations to ensure immediate readiness.

### Conversation Signals Settings

Similar to web widget, but optimized for kiosk operations:

* **Start signal**: Marks beginning of new interactions
* **Stop signal**: Indicates conversation end
* **Interrupt signal**: Tracks manual interruptions These signals are crucial for managing physical space interactions and tracking kiosk usage.

<figure><img src="/files/lW5hiZ9dOsJ8A98Btb3M" alt=""><figcaption><p>Metahuman kiosk settings</p></figcaption></figure>

### Focus State Behaviour

Manages how your kiosk handles user attention:

* **Create new end user on focus**: Generates new user profile when someone approaches
* **Create new conversation on focus**: Starts fresh conversation with each interaction
* **Defocus after \[X] seconds**: Sets how long the kiosk waits before returning to idle state These settings are vital for public space installations where multiple users interact sequentially.

### Listening State Behaviour

Controls the virtual being's active listening periods:

* **Stop listening after \[X] seconds**: Defines how long the kiosk listens for user input Important for managing natural conversation flow and preventing unintended interactions.

### Defocus State Behaviour

Determines what happens when users step away:

* **Persist end user information**: Maintains user context for quick return
* **Persist conversation state**: Keeps conversation history
* **Disconnect conversation**: Completely resets for next user Choose based on your privacy and user experience requirements.

<figure><img src="/files/TOex5IWtvWFhCfO52FtN" alt=""><figcaption><p>Metahuman kiosk settings</p></figcaption></figure>

### Camera Angle

Choose how your Metahuman avatar appears to users:

* **Face**: Close-up view for personal interactions
* **Upper body**: Professional presentation style
* **Full body**: Complete avatar view for immersive experience

### Scene Customization

Customize the virtual environment:

* Background color selection
* Environmental settings Creates appropriate atmosphere for your installation location.

### Localization

Set the kiosk interface language for your target audience.

### UI Customization

Basic interface adjustments:

* Remove Virbe logo option
* Quick reply button text color Maintain brand consistency in your physical space.

### Advanced UI Settings

Specialized configurations for unique installations:

* **Disable UI**: For custom display setups
* **Disable keyboard**: For voice-only interactions
* **Disable voice input**: For text-only implementations Perfect for specific use cases like dual screens or holographic displays.

<figure><img src="/files/xZKl2tIrBy7bCGRoZAqw" alt=""><figcaption><p>Metahuman kiosk settings</p></figcaption></figure>

### Security Settings

Protection for kiosk settings:

* **Security PIN**: Optional PIN protection for accessing kiosk settings
* Prevents unauthorized changes to kiosk configuration Recommended for public installations.

<figure><img src="/files/6sUZZhLB0VMwjnvoteSn" alt=""><figcaption><p>Metahuman kiosk settings</p></figcaption></figure>


# Deployment

This section describes profile deployment process divided into touchpoints, as they are touchpoint-specific:

{% content-ref url="/pages/zyfvAF9jeBAKoQmPWPue" %}
[Web widget deployment](/dashboard-management/profiles/deployment/web-widget-deployment)
{% endcontent-ref %}

{% content-ref url="/pages/E9Px3KilrGl7BrDs38wO" %}
[Metahuman kiosk deployment](/dashboard-management/profiles/deployment/metahuman-kiosk-deployment)
{% endcontent-ref %}


# Web widget deployment

To use Virtual Being on your website you have to paste code snippet on your website that can be found in the "Deployment" tab of the Profile settings.&#x20;

<figure><img src="/files/mGdLD48Fuuq4DmFATUJx" alt=""><figcaption></figcaption></figure>

Select the mode you're interested in and you'll see one code snippet that you need to paste before the `</body>` of your website. Paste this code snippet on every page where you would like your Virtual Being to appear.&#x20;

#### Authorize domains

{% hint style="info" %}
You need to **authorize your domain where you plan to embed Virbe's code snippet.**
{% endhint %}

Type in your high-level domain of a website on which you'd like to use Virtual Beings, either in Component Mode or Plugin Mode.

### Floating Mode

When using plugin mode your Virtual Being will appear on the website as a small avatar in the bottom right corner of the page. To initiate discussion user needs to click the avatar and the expanded version of the plugin will appear.

<figure><img src="/files/DiB7jltUDXEKBxFIftbr" alt=""><figcaption><p>Floating web widget on a website - collapsed</p></figcaption></figure>

<figure><img src="/files/g0kwRVUgrhsDh4PrOnt1" alt=""><figcaption><p>Floating web widget - expanded</p></figcaption></figure>

### Embedded mode

You can also embed your virtual being directly within the content of your website (not floating on top of it), it can even be embedded as a sole content of your website or in a fullscreen mode.

<figure><img src="/files/f5LcWQRcpOdUlVo7wraU" alt=""><figcaption><p>Fullscreen web component</p></figcaption></figure>


# Metahuman kiosk deployment

<figure><img src="/files/ZSkzDABTnj2B7aPsQN5s" alt=""><figcaption></figcaption></figure>


# Configurations

The Configurations section lets you manage all AI and communication engines required for your virtual being.

The Configurations section is crucial for your virtual being's functionality as it manages all essential technology integrations. This is where you set up and maintain speech recognition, voice synthesis, and AI model connections.

<figure><img src="/files/HrAy4kfyKeKsPfEr1tZF" alt=""><figcaption><p>Engines Configurations in Virbe Dashboard</p></figcaption></figure>

### Default Configuration Status

**Virbe-hosted Dashboards**

* Come pre-configured with:
  * Google Speech-to-Text
  * Azure Speech-to-Text
  * Azure Text-to-Speech
* Require manual setup of:
  * AI model credentials
  * Additional engines such as external conversational engines

**Self-hosted Dashboards**

* Require manual configuration of all components:
  * Speech-to-Text engines
  * Text-to-Speech engines
  * AI model credentials
  * Optionally: Conversational engines as above

{% hint style="info" %}
**Best Practices**

* Store your credentials securely
* Verify endpoints before saving
* Test configurations after setup
* Monitor usage and performance
* Keep backup configurations – add backup configurations in advance so that you can quickly replace them in case of the provider's outage.
  {% endhint %}


# Speech-to-Text

### Speech-to-Text (STT) Engines

Configure voice recognition capabilities – this allows your virtual being to transform anything they hear into a text that can be further processed by a conversational engine. Supported STT engines:&#x20;

* **Azure**
* **Google**
* **NVIDIA Riva**

<figure><img src="/files/UoluQLXu2RBserAVnM0Y" alt=""><figcaption><p>Speech-to-Text configuration</p></figcaption></figure>

Each engine can be configured independently, and you can set one as default. Multiple engines provide redundancy and flexibility for different use cases.


# Text-to-Speech

### Text-to-Speech (TTS) Engines

Manages voice synthesis for your virtual being – this turns the textual response from the conversational engine into spoken response. This is crucial for final experience of the end users, that's why we only support engines that provide good quality voices and solid, real-time integration capabilities, such as:

* **Azure**
* **ElevenLabs**
* **NVIDIA Riva**

<figure><img src="/files/q7EijRFGGaZ1WJAW2K1n" alt=""><figcaption><p>Text-to-Speech configuration</p></figcaption></figure>


# AI Models

### AI Models

Add and configure Large Language Models for your virtual being that will govern the response generation as well as conversation flow logic. Supported engines:

* **OpenAI**
* **Azure OpenAI**
* **Anthropic**

<figure><img src="/files/HBGGjSHSmf3Fe9dq8yml" alt=""><figcaption><p>Ai models configuration</p></figcaption></figure>

**Where to find credentials?**

Log in to a relevant service provider and find a section related to using the service by API. Below you'll find an example of such a section in OpenAI's dashboard:

<figure><img src="/files/ow07ieFT2rjBdrTRLt9C" alt=""><figcaption><p>API keys section in OpenAI's dashboard</p></figcaption></figure>

You can configure multiple AI models and set one as default. Each model requires its own set of credentials and configurations.&#x20;

{% hint style="info" %}
**In Conversation Flows editor you'll be able to use different AI models** for different nodes requiring LLMs, so that you can use faster and cheaper models for logic processing and larger models for high quality conversational responses.
{% endhint %}


# Conversational Engines

### Conversational Engines

Virbe seamlessly supports integration with several widely-used conversational engines, enhancing its versatility and use case applicability.&#x20;

<figure><img src="/files/DN6q7b6hLl8uQFZf6gVu" alt=""><figcaption><p>Conversational Engine configuration</p></figcaption></figure>

Below are the conversational engines that Virbe is compatible with:

<figure><img src="/files/GzKQsxbd1COLh26GiKTl" alt="" width="375"><figcaption><p>Supported Conversational AI engines</p></figcaption></figure>

* **DifyAI**
* **DialogflowEs**
* **DialogflowCx**
* **Botpress**
* **Cognigy**
* **SentiOne**
* **Custom Endpoint**: Virbe's API allows for the integration with custom-made engines, providing endless customization possibilities.

{% hint style="info" %}
Custom Endpoint documentation is coming soon.
{% endhint %}


# Personas

Personas define your virtual being's identity, appearance, and voice.

You can create as many personas as you want. Each persona can be customized to align with your brand and use case through two main components: Identity and Voice settings.

<figure><img src="/files/GgfbDvzpJ6Q66WetMA3m" alt=""><figcaption><p>Personas in Virbe Dashboard</p></figcaption></figure>

### Identity Settings

Configure your virtual being's core characteristics:

<figure><img src="/files/qCKmC9sKm7EvO9aBwI0Y" alt=""><figcaption><p>Persona's basic information</p></figcaption></figure>

**Basic Information**

* Name: Your virtual being's display name
* Age: Numerical age representation
* Role: Professional role or function (e.g., Assistant, Specialist)

**Bio** Create a detailed description (up to 2000 characters) that defines your virtual being's:

* Personality traits
* Communication style
* Purpose and expertise
* Example greetings or responses

This bio helps shape how your virtual being interacts with users and influences AI-generated responses.

### Avatar Selection

{% hint style="warning" %}
**Important: Avatar Compatibility** \
Different touchpoints support specific avatar technologies:
{% endhint %}

* Web widget: Ready Player Me or Didimo avatars
* Kiosk application: Only Metahuman avatars

To change your avatar:

1. Click "Change avatar"
2. Choose from available preset avatars
3. Select an avatar compatible with your intended deployment platform

<figure><img src="/files/JbBKwagiYmfEsMpP6F1a" alt=""><figcaption></figcaption></figure>

### Voice Configuration

The voice system supports multiple languages and voice options:

<figure><img src="/files/4ikapDnkhXaJxSfrUSBJ" alt=""><figcaption><p>Persona's voice configuration</p></figcaption></figure>

**Voice Selection**

* Choose from available text-to-speech engines (as configured in [Configurations](/dashboard-management/configurations) section);
* Select specific voices for each language;
* Configure multiple voices for multilingual support.

{% hint style="info" %}
**Best Practices**

* **Select multilingual voices** when possible for flexibility;
* Configure voices for all languages your virtual being will use;
* Test voices to ensure they match your virtual being's personality.
  {% endhint %}


# Knowledge Base

The Knowledge Base serves as your virtual being's memory and understanding center. Here you store and organize all the information your virtual being needs to generate informed responses.

Using RAG (Retrieval Augmented Generation) technology, this content is transformed into embeddings that enable your virtual being to provide contextually relevant responses during conversations.

<figure><img src="/files/QsDjlodWQAtVIJqJ15ve" alt=""><figcaption><p>Knowledge Base in Virbe Dashboard</p></figcaption></figure>

### Structure and Components

**Collections**

Collections are folders that help organize related documents into logical groups. Good organization helps your virtual being quickly access relevant information during conversations. Common collection types include:

* Product information and specifications
* Company policies and procedures
* Frequently asked questions
* Troubleshooting guides

**Documents**

Documents are the building blocks of your Knowledge Base, containing the actual information your virtual being will reference. Each document has these key characteristics:

* Maximum length: 10,000 characters per document
* Format: Plain text with support for images
* Purpose: Source material for AI embeddings used in responses
* Quantity: Limited based on your subscription plan

<figure><img src="/files/9fpvrcmZkGkceeOM0pyQ" alt=""><figcaption><p>Example of a document in Knowledge Base</p></figcaption></figure>

### **Working with content**

**Managing Collections**

Collections help maintain an organized and efficient Knowledge Base. To create a collection:

1. Navigate to the Knowledge Base section
2. Click "Add collection"
3. Enter a descriptive collection name
4. Save the collection

You can rename or delete collections and move documents between them as your knowledge structure evolves.

**Creating and Editing Documents**

When creating documents, focus on clear, specific information that your virtual being can easily reference. To create a document:

1. Select the appropriate collection
2. Click "Add document"
3. Enter a descriptive name
4. Add your content, staying within the 10,000 character limit
5. Save your changes

**Adding Visual Content**

Images can enhance your documents and provide additional context. To add images:

1. In document edit mode, find the Images section
2. Click the "+" button
3. Either upload an image or drag and drop it
4. Add a name and descriptive text that helps the AI understand the image
5. Save your changes

{% hint style="info" %}
It's important to include information on what is depicted in the image – this will allow the virtual being to **select the most relevant images during the conversation and display them contextually.**
{% endhint %}

<figure><img src="/files/RKVdpfgsgRkE149ZvpV6" alt=""><figcaption><p>Adding an image to Knowledge Base document</p></figcaption></figure>

#### How Embeddings Work

The Knowledge Base automatically processes your documents to create embeddings - mathematical representations that enable intelligent information retrieval. This process allows your virtual being to:

* Understand the context of user questions
* Find relevant information quickly
* Generate natural responses using your content

#### Using Knowledge in Conversations

Your Knowledge Base connects seamlessly with conversation flows through LLM nodes:

* RAG technology searches through your documents
* Relevant content is retrieved based on context
* Information is incorporated into natural responses

#### Best Practices

#### Effective Organization

Keep your Knowledge Base efficient and useful by:

* Creating intuitive collection structures
* Using clear, descriptive document names
* Keeping documents focused on specific topics
* Maintaining current, accurate content

#### Content Creation Tips

Create content that works well with AI processing:

* Write in clear, straightforward language
* Include practical examples where helpful
* Provide context with good image descriptions
* Structure information logically

#### Maintaining Performance

Keep your Knowledge Base running smoothly:

* Monitor your document count against plan limits
* Regularly review and update content
* Test knowledge retrieval periodically
* Archive outdated information

See our recommendations for making the most out of yout Knowledge Base content:

{% content-ref url="/pages/3xzKId8ZCSSrZiFM6bDB" %}
[Best Practices for Knowledge Base Content](/dashboard-management/knowledge-base/best-practices-for-knowledge-base-content)
{% endcontent-ref %}


# Best Practices for Knowledge Base Content

**Content Organization for LLM Processing**

**Document Length and Chunking**

* Keep individual documents focused and concise rather than creating long, comprehensive documents
* Aim for natural breakpoints in content - each document should cover one complete concept or topic
* Consider how information might be retrieved - break up content based on likely user queries
* The 10,000 character limit isn't a target - shorter, focused documents often work better

**Information Redundancy**

When similar information appears in multiple documents:

* Redundancy can confuse LLM context understanding
* Best approach: Reference a single source document for core information, then add context-specific details in other documents

Example:\
✅ Good:

* Core document: "Product X Technical Specifications"
* Related docs: "Product X for Beginners", "Product X Troubleshooting" Each adds unique context while referencing core specs

❌ Avoid:

* Multiple documents repeating the same specifications with slight variations
* Inconsistent versions of the same information

**Handling Conflicting Information**

* Maintain a single source of truth for factual information
* If information changes over time, update all related documents
* For genuinely conflicting scenarios (e.g., different recommendations for different situations), clearly specify the context

**Content Structure**

**Document name**

The way you name the document should serve the purpose of intuitive document organization, however to make sure that it is included in the relevant chunks, repeat it at the top fo the document content.&#x20;

**Information Hierarchy**

* Start with the most important information
* Use clear headings and logical grouping
* Build from general to specific
* Include relevant context without overloading

**Context Signaling**

Help the LLM understand content relationships:

* Use clear transitional phrases
* Explicitly state relationships between concepts
* Include relevant qualifiers and conditions

Example: "This guidance applies specifically to Model X-100 manufactured after 2024."

**Language and Style**

**Clarity and Consistency**

* Use consistent terminology throughout documents
* Define technical terms when first used
* Maintain consistent formatting for similar types of information
* Use clear, unambiguous language

**Contextual Markers**

Include phrases that help LLMs understand:

* Purpose: "This document explains..."
* Scope: "This applies to..."
* Relationships: "This is related to..."
* Conditions: "Only valid when..."

**Optimizing for Retrieval**

**Keywords and Natural Language**

* Include natural variations of key terms
* Use complete sentences rather than bullet points
* Incorporate likely user query phrasing
* Balance technical accuracy with conversational tone

**Common Pitfalls to Avoid**

**Content Issues**

* Overly complex sentences that may confuse context
* Ambiguous pronouns or references
* Implicit knowledge not stated in the text
* Inconsistent terminology

**Structure Issues**

* Too much information in one document
* Poor organization that obscures relationships
* Lack of clear context or scope
* Missing crucial qualifiers or conditions


# Data tables

Data Tables provide a structured way to store and manage information that requires precise retrieval and presentation.

Unlike the Knowledge Base, which handles less structured and context-heavy content, Data Tables are ideal for organized, formatted data where accuracy is crucial.

<figure><img src="/files/5X6SMGgGB8drmuSuN3HA" alt=""><figcaption><p>Example of a table</p></figcaption></figure>

### Overview

Data Tables enable you to:

* Store structured information in a tabular format
* Ensure accurate data retrieval
* Generate visual cards during conversations
* Filter and query specific information

### Data Types

Data Tables support various types of content:

<figure><img src="/files/bmqYaIIbW8JJCX3W0QKy" alt=""><figcaption><p>Selecting data type for a column</p></figcaption></figure>

{% hint style="warning" %}
Note that a column's data type can only be assigned upon creation, it cannot be changed later on.
{% endhint %}

#### Basic Types

* String: Text content
* Number: Numerical values
* Boolean: True/false values
* Date: Calendar dates
* DateTime: Dates with time information

#### Rich Content Types

* Image: Visual content
* JSON: Structured data objects
* Code: Programming code snippets

### Working with Tables

#### Creating Tables

1. Navigate to Data Tables section
2. Click "Add table"
3. Define table structure:
   * Add columns
   * Specify data types
   * Add descriptions (optional)

#### Adding Columns

Each column requires:

* Column name
* Data type selection
* Optional description for clarity

#### Managing Records

* Add records individually
* Edit existing records
* Delete outdated information

### Using Data Tables in Conversations

#### Data Retrieval

Data Tables excel in scenarios requiring precise information:

* Product specifications
* Pricing information
* Service details
* Configuration data

#### Filtering and Queries

In Conversation Flows, you can:

* Filter records based on specific criteria
* Search for exact matches
* Compare numerical values
* Check date ranges

#### Visual Cards

Data Tables can generate visual cards during conversations:

* Present structured information clearly
* Show product details
* Display different options in a visual manner

### Best Practices

#### Table Structure

* Use clear, consistent column names
* Choose appropriate data types (cannot be changed after the column is created)
* Add descriptions for complex fields
* Keep table structure simple and focused

#### Data Management

* Regular updates to maintain accuracy
* Archive outdated information
* Validate data during entry
* Monitor table size and performance

#### Integration Tips

* Use tables for factual, structured data
* Combine with Knowledge Base for comprehensive responses
* Design tables with conversation flow needs in mind

### Example Use Cases

#### Product Catalog

The Product Catalog use case is ideal for e-commerce and retail applications where your virtual being needs to access accurate product information.

```
Columns:
- Product ID (String)
- Name (String)
- Price (Number)
- Image (Image)
- Specifications (JSON)
```

This structure enables your virtual being to:

* Present products with consistent information
* Show visual product representations in cards
* Answer detailed questions about specifications
* Provide accurate pricing information
* Filter and sort products based on attributes

#### Service Pricing

Perfect for subscription-based services or tiered pricing models where accurate pricing and feature information is crucial.

```
Columns:
- Plan Name (String)
- Price (Number)
- Features (JSON)
- Availability (Boolean)
```

This structure allows your virtual being to:

* Compare different service tiers
* Present accurate pricing information
* Detail included features per plan
* Show only currently available options
* Create visual pricing comparison cards

#### Configuration Settings

Ideal for managing system settings, preferences, or any time-sensitive configuration data that needs tracking.

```
Columns:
- Setting Name (String)
- Value (String)
- Last Updated (DateTime)
- Status (Boolean)
```

This structure helps your virtual being:

* Provide accurate system settings information
* Track configuration changes over time
* Verify setting validity before use
* Manage feature toggles and states

{% hint style="info" %}
Remember that Data Tables are best used for structured, factual information where accuracy is crucial. For more narrative or context-heavy content, consider using the Knowledge Base instead.
{% endhint %}


# Conversation Flows

Conversation Flows are the heart of your virtual being's intelligence.

They determine how your virtual being understands inputs, processes information, and generates responses. Think of flows as the pathways your virtual being's "thoughts" follow during conversations.

## Core Concepts

### Flow Triggers

Every conversation flow begins with an input, which can come from multiple sources:

* User's text or voice input
* System signals (like conversation start/end)
* External integrations
* Interface interactions (buttons, cards)
* Custom events

<figure><img src="/files/SE4MFQDTI4P09MdGXu9f" alt="" width="563"><figcaption><p>Start of Main flow: all relevant events should be connected with follow-up nodes in order to</p></figcaption></figure>

**The entry point of a flow activates each time any of these inputs occurs,** making your virtual being responsive to all types of interactions.&#x20;

{% hint style="info" %}
**All relevant events branching out** of the Start node should be connected with follow-up nodes in order to be handled predictably.
{% endhint %}

### Conversation Context

Your virtual being maintains context throughout the conversation automatically. This means it remembers:

* Previous messages
* User information
* Conversation history
* Current conversation state

**This context is automatically included in LLM prompts,** enabling coherent, contextual conversations without additional programming.

### Nodes

Conversation flows is built from blocks that we call "Nodes". Their functionality ranges from simply delivering predefined text response, through LLM responses, complex conditional logic to external integrations or webhooks.

<figure><img src="/files/IM4BMu3j6yx1FNO9U3xc" alt=""><figcaption><p>Conversational flow is built with nodes of different types</p></figcaption></figure>

***

Read more about basic concepts of building a conversational flow:

{% content-ref url="/pages/DIfQvGbrkHyrk8Ejr1yj" %}
[Getting started with Conversation Flows](/dashboard-management/conversation-flows/getting-started-with-conversation-flows)
{% endcontent-ref %}

Or learn more on how and when to use each node type:

{% content-ref url="/pages/PR6yBx27HTy9LPR8rEXO" %}
[Nodes](/dashboard-management/conversation-flows/nodes)
{% endcontent-ref %}


# Getting started with Conversation Flows

Conversation flows can be as simple or as complicated as is your use case. We recommend to start simple and add complexity as needed.

Creating conversation flows might seem daunting at first, but in Virbe platform it's designed to be as simple or sophisticated as you need it to be. Think of it like building with blocks – you can start with just two pieces to create a functional conversation, then add more blocks to create increasingly complex and engaging interactions.&#x20;

Whether you're building a simple customer service bot or a sophisticated virtual assistant, the same basic principles apply.&#x20;

**The beauty of the system is that while a basic flow can handle natural conversations right out of the box, you have the power to add logic, branching paths, and integrations as your needs grow.**

## Minimal Viable Flow

The simplest functional flow consists of just two elements:

1. Start node
2. LLM Response node

<figure><img src="/files/3pp3QQHdsNpPVf9gfk2d" alt=""><figcaption><p>Minimal Viable flow: Start + LLM Response node</p></figcaption></figure>

This basic setup is powerful enough to handle open-ended conversations because:

* Each user input triggers the flow
* Conversation context is maintained automatically
* The LLM generates contextually appropriate responses

Add specific system instructions for the LLM node to provide general guidance for the virtual being on how they should approach the conversation with the end user. The node detailed form also accepts additional context – note that System instruction is the most prioritized part of the LLM prompt, additional context bears less weight on the behavior and should be used for less important elements of the prompt.

<figure><img src="/files/7emcPRnVwqxX4cDLjEVp" alt=""><figcaption><p>LLM Response node details</p></figcaption></figure>

## Building More Complex Flows

### **Flow Control Mechanisms**

As you build more sophisticated flows, two key mechanisms help control conversation progression:

1. **Wait for User Input** This toggle appears in many nodes and determines whether the flow should:

* Wait for user response before proceeding (toggle on)
* Continue immediately to the next node (toggle off)

<figure><img src="/files/fO5UQiiHJ72rkWNb9r5r" alt="" width="563"><figcaption><p>Cards from Table: Example of a node with "Wait for user input" option</p></figcaption></figure>

2. **Checkpoints** Checkpoints allow you to:

* Save the conversation state at specific points
* Return to these points upon the next incoming event or input
* Handle complex conversation branches

<figure><img src="/files/JqtTfQ378m3SXamJW6vG" alt="" width="563"><figcaption><p>Checkpoint node</p></figcaption></figure>

### **Example: Guided Conversation Flow**

You can use Checkpoint nodes to make a new "starting point" for the conversation, so that each incoming trigger doesn't take the user through the same path from the very beginning. For example, you can use it to make a logical branching based on user's needs:

```
Start 
  → Intent Matcher (understand user need)
    → Checkpoint (save the status)
      → LLM Response (provide personalized response for user's needs)
```

<figure><img src="/files/ja5eax7YIyRmQC4TF5lg" alt=""><figcaption><p>Complex conversation branching based on Intent matching and Checkpoints</p></figcaption></figure>

{% hint style="info" %}
**For** **more complex flows, consider branching the Main flow out into separate flows to handle different logic-based scenarios rather than using Checkpoints.** For that create additional flows and then use "Go to Flow" node to connect any relevant last node of your flow with the separate flow.&#x20;
{% endhint %}


# Managing nodes

The building blocks of your virtual being's conversations are organized into logical categories, each serving a specific purpose in creating dynamic interactions.

## Managing nodes

### Adding nodes to canvas

In order to **add nodes to the flow, right click on an empty space on the canvas.** The dropdown menu with all node types will appear. Simply click on the type of node you want to add to your flow and its block will appear on the canvas.

<figure><img src="/files/uu3H1gBoXWUm6Kyhs59k" alt=""><figcaption><p>Write click on canvas to open dropdown with new node selection</p></figcaption></figure>

### Editing nodes

Each node has its own properties and settings – these you can modify by clicking on the node block that is already added to the canvas. The side drawer with settings panel for this particular node will appear on the right hand side of the canvas.

{% hint style="warning" %}
Remember to save all the changes you make in the node settings before closing it!
{% endhint %}

To close the side drawer with node settings simply click on the "Save" or "Cancel" button (remember that changes you made won't be saved if you click on the "Cancel" button). You can also close it by clicking anywhere on else on the canvas – this action has the same eefect as cancel, which means that **no changes will be saved.**

### Removing nodes

To remove a node focus on it by clicking it – the additional menu button (three dots) will appear above it. Click it to reveal options to manage the node: Edit, Duplicate or Delete.&#x20;

<div align="center"><figure><img src="/files/d6p3j1Hb858xjJw7c124" alt="" width="195"><figcaption><p>Focus on the node to see additional options</p></figcaption></figure></div>

<figure><img src="/files/1IggXjfwvqmzAp3h6ZH9" alt="" width="197"><figcaption><p>Options menu to manage a node</p></figcaption></figure>

{% hint style="info" %}
You can also delete a node by focusing on it and the hitting "Delete" key on your keyboard.
{% endhint %}

### Connecting nodes

**Each node (except the Start node) has connection points on both sides:** for entry connection and output connections. The number of output connections will depend on the node, for example the "Intent matcher" node will have as many output connection points as the intents added to its logic, plus one more for "Intent not found". All conditional logic nodes have to have and "out" in a form of a connection point that will be handled should neither of the conditions be met.

**To connect two nodes together** simply click and hold on the connection point and the drag the connection to the desired node.

<figure><img src="/files/zAfX9Xab1lTM9udx1MaZ" alt=""><figcaption><p>Multiple connections per node</p></figcaption></figure>

{% hint style="warning" %}
**Make sure that all connection points are connected to a follow up nodes**, otherwise the conversation flow can ghet stuck or start anew (depending on whether or not any Checkpoints were used or "Wait for user input" option enabled on any of the precedeing nodes).
{% endhint %}


# Nodes

There are different types of nodes, serving different needs.

Each category is designed to handle specific aspects of conversation management, and they work together seamlessly to create natural, engaging interactions.&#x20;

As you build your flows, you'll find yourself mixing and matching these node types to create increasingly sophisticated conversation patterns. Think of them as different tools in your toolbox - each has its purpose, and knowing when to use each type is key to creating effective conversations.

Here you will find detailed description of all node types and their example usage.

* [Logic nodes](/dashboard-management/conversation-flows/nodes/logic-nodes)
  * [Route by Profile](/dashboard-management/conversation-flows/nodes/logic-nodes/route-by-profile)
  * [If/Else Router](#if-else-router)
  * [Intent Matcher](/dashboard-management/conversation-flows/nodes/logic-nodes/intent-matcher)
* [Flow nodes](/dashboard-management/conversation-flows/nodes/flow-control-nodes)
  * [Go to Flow](/dashboard-management/conversation-flows/nodes/flow-control-nodes/go-to-flow)
  * [Checkpoint](/dashboard-management/conversation-flows/nodes/flow-control-nodes/checkpoint)
* [Response nodes](/dashboard-management/conversation-flows/nodes/response-nodes)
  * [Text](/dashboard-management/conversation-flows/nodes/response-nodes/text)
  * [LLM Response](/dashboard-management/conversation-flows/nodes/response-nodes/llm-response)
  * [Behavior](/dashboard-management/conversation-flows/nodes/response-nodes/behavior)
  * [Call Conv AI](/dashboard-management/conversation-flows/nodes/response-nodes/call-convai)
* [Action nodes](/dashboard-management/conversation-flows/nodes/action-nodes)
  * [Collect User Data](/dashboard-management/conversation-flows/nodes/action-nodes/collect-user-data)
  * [Quick Reply](/dashboard-management/conversation-flows/nodes/action-nodes/quick-reply)
  * [Cards from Table](/dashboard-management/conversation-flows/nodes/action-nodes/cards-from-table)
* [Context nodes](/dashboard-management/conversation-flows/nodes/context-nodes)
  * [Find Record(s)](/dashboard-management/conversation-flows/nodes/context-nodes/find-record-s)
* [Integration nodes](/dashboard-management/conversation-flows/nodes/integration-nodes)
  * [Call Webhook](/dashboard-management/conversation-flows/nodes/integration-nodes/call-webhook)
  * [Custom Action](/dashboard-management/conversation-flows/nodes/integration-nodes/custom-action)


# Logic nodes

&#x20; **Logic** nodes handle decision-making and routing, determining how conversations flow based on different conditions   user intents. They include:

* [Route by Profile, ](/dashboard-management/conversation-flows/nodes/logic-nodes/route-by-profile)
* [If/Else Router, ](/dashboard-management/conversation-flows/nodes/logic-nodes/if-else-router)
* [Intent Matcher](/dashboard-management/conversation-flows/nodes/logic-nodes/intent-matcher)

<figure><img src="/files/1mKU6Rvzfuqchf8Q61eL" alt="" width="233"><figcaption><p>Logic nodes</p></figcaption></figure>


# Route by Profile

The Route by Profile node allows your virtual being **to deliver different conversation experiences depending on where it's deployed.** When a user interacts with your virtual being, this node checks which profile the interaction is taking place on (e.g. specific web widget or  kiosk) and routes the conversation along the appropriate path.

#### Setting up profile routing:

1. Select target profiles from your configured deployments
2. Create specific cases for each profile that needs unique handling
3. Define the conversation path for each case
4. Set a default path for any unmatched profiles to prevent dead ends

Example:

**The virtual being will deliver a different greeting when the conversation starts depending on the touchpoint**, in this case there are two profiles deployed: a web widget and a kiosk.

<figure><img src="/files/tbnlDpdG8NbBXjtM0Acz" alt=""><figcaption><p>Route by Profile example use case</p></figcaption></figure>

#### Other example use cases:

* Different responses for web vs kiosk
* Different data collection based on the profile
* Different Datat tables searched for answers
* Custom behavior per deployment

{% hint style="info" %}
I**mportant considerations:**

* Always set a default case to handle unexpected situations
* Test behavior thoroughly across all profiles
* Consider flow complexity depending on the touchpoint and environment (public access vs personal device)
* Maintain consistent core functionality across all profiles
  {% endhint %}


# If/Else Router

The If/Else Router node enables your flow to branch based on different conditions. You can string together multiple conditions to handle various scenarios, with each condition creating a new path in the conversation.

#### Setting up conditional routing:

1. Select condition type (Signal, Language, or other available types)
2. Configure the value to check for that condition
3. Combine multiple conditions using "+ Add condition" (by If or And operator)
4. Create specific cases for each scenario
5. Set up an "Else" path for when no conditions match

Example:

<figure><img src="/files/Mvl85btocGYY9GTzGpaM" alt=""><figcaption><p>Example of If/Else Router use</p></figcaption></figure>

#### Common use cases:

* Check conversation state signals (start, interrupt, end)
* Route based on user's language
* Handle different user inputs
* Process system events
* Manage conversation flow based on multiple conditions

{% hint style="info" %}
**Important** **considerations**:

* Each condition creates a new path - keep them organized (e.g. by moving them to separate flows)
* Conditions are checked in order, from top to bottom
* The Else path handles any case not covered by specific conditions
* You can remove individual conditions using "Remove case"
* Multiple conditions can be combined for complex routing
* Test all paths to ensure proper handling
  {% endhint %}


# Intent Matcher

Leverages LLM understanding to create natural, context-aware routing without needing exact keyword matches, making conversations more flexible and human-like.

The Intent Matcher node uses LLM capabilities to understand the meaning behind user inputs and route conversations accordingly. When a user message arrives, this node analyzes it against defined intents and directs the flow based on the best match.

#### Setting up intent matching:

1. Select the LLM model to use for intent analysis
2. Define intent name (e.g., "contact-team", "request-pricing")
3. Describe trigger situations that should activate this intent
4. Create different paths for each intent
5. Set up a default path for unmatched intents

Example: A virtual being needs to distinguish between product inquiries and support requests:

<figure><img src="/files/NFP0rq0d0d0OwKtAHJdC" alt=""><figcaption><p>Example of use of  Intent Matcher node</p></figcaption></figure>

```
Intent: product-inquiry
Trigger: When user asks about products, features, or pricing

Intent: technical-support
Trigger: When user mentions problems, errors, or needs help

Default: General conversation handling
```

#### Common use cases:

* Route to specific knowledge base sections
* Direct to appropriate support flows
* Identify user goals and intentions
* Categorize queries by type
* Handle multiple related intents

{% hint style="info" %}
**Important considerations:**

* Keep trigger descriptions clear and specific
* Test with various phrasings of similar intentions
* Consider common user language and expressions
* Balance between too broad and too specific triggers
* Monitor intent matching accuracy
* Maintain a sensible default path for unmatched intents
  {% endhint %}


# Flow control nodes

**Flow** nodes manage the conversation's progression, allowing you to create checkpoints and connect different conversation paths. These include:

* [Go to Flow](/dashboard-management/conversation-flows/nodes/flow-control-nodes/go-to-flow)
* [Checkpoint ](/dashboard-management/conversation-flows/nodes/flow-control-nodes/checkpoint)

<figure><img src="/files/7BrSxYsW3DNdfohYdLBF" alt="" width="223"><figcaption><p>Flow nodes</p></figcaption></figure>


# Go to Flow

The Go To Flow node enables modular conversation design by connecting different flows together.

**Using separate flows for distinct conversation paths keeps your flows organized, maintainable, and reusable – a highly recommended practice for any non-trivial virtual being implementation.**

#### Setting up flow transitions:

1. Create a dedicated flow for specific conversation paths
2. Use Go To Flow node to connect to that flow
3. Select the target flow from your flows list
4. Flow returns to original path when completed

Example: Rather than handling technical support queries in your main flow, create a dedicated "Technical support" flow:

<figure><img src="/files/qbHuNcJ4Mp8nWLBL6huF" alt=""><figcaption></figcaption></figure>

```
Main Flow:
- Check if user has technical issues
- Go To Flow: Technical support
- Continue with personalized interaction

Technical support Flow:
- Collect device details
- Get issue description
- Provide troubleshooting steps
- If unresolved: collect contact info
- Return to main flow
```

#### Common use cases:

* Authentication flows
* Data collection sequences
* Common response patterns
* Multi-step processes
* Reusable conversation segments

{% hint style="info" %}
**Important considerations:**

* Break complex conversations into logical modules
* Reuse common flows across different paths
* Keep flows focused on specific tasks
* Keep main flow clean and high-level
* Name flows clearly and descriptively
* Test flow transitions thoroughly
* Maintain clear entry and exit points
  {% endhint %}


# Checkpoint

It creates a savepoint in the flow, enabling the conversation to resume from that point based on user input or system signals.

Setting up checkpoints:

1. Place checkpoint node at key conversation points
2. Configure **"Wait for user input"** if interaction is needed
3. Connect both user input and signal paths if required
4. Create paths for different continuation scenarios
5. Link to appropriate next steps in the flow

Example: As shown in the screenshot, checkpoints are used after intent recognition to maintain conversation state:

<figure><img src="/files/zZIePYmB2XP1O1rfY52C" alt=""><figcaption><p>Example of using Checkpoints</p></figcaption></figure>

```
Intent matcher identifies topic:
- Pricing questions
- Troubleshooting needs
- Upgrade requests

Each path has Checkpoint:
- Wait for user input enabled
- Handle both user responses and signals
- Continue with appropriate LLM responses
- Maintain context through the interaction
```

Common use cases:

* Maintain conversation state during multi-step processes
* Handle interruptions gracefully
* Create conversation branches
* Manage form-filling and data collection sequences

{% hint style="info" %}
**Important considerations:**

* Consider both user inputs and system signals
* Consider using "Go to flow" for more complex paths
* Test checkpoint returns thoroughly
* Plan checkpoint connections carefully
  {% endhint %}


# Response nodes

**Response** nodes generate your virtual being's outputs, from simple text to AI-generated responses and behavioral expressions. These include:

* [Text](/dashboard-management/conversation-flows/nodes/response-nodes/text)
* [LLM Response](/dashboard-management/conversation-flows/nodes/response-nodes/llm-response)&#x20;
* [Call Conv AI](/dashboard-management/conversation-flows/nodes/response-nodes/call-convai)
* [Behavior](/dashboard-management/conversation-flows/nodes/response-nodes/behavior) (coming soon)

<figure><img src="/files/gqL9hSzYZKywQmjriJBb" alt="" width="238"><figcaption><p>Response nodes</p></figcaption></figure>


# Text

The Text node sends a fixed, predetermined message to users.

It's the simplest response type, useful when you need a consistent, unchanging message rather than AI-generated text.

#### Setting up text responses:

1. Enter the exact text to be shown (up to 1000 characters)

{% hint style="info" %}
Note: Using exact text responses is faster and completely consistent, but may make interactions feel less natural. Only use in very specific contexts.
{% endhint %}

#### Example: Greet the user

<figure><img src="/files/sw7B1dkIFr5o6ytgo2KE" alt=""><figcaption><p>Example of Text node use</p></figcaption></figure>

{% hint style="info" %}
Consider adding a follow-up Checkpoint node with a "Wait for user input" option enabled to make sure that the user's response will proceed to the next node (could be an Intent Matcher node in the above example).
{% endhint %}

#### Common use cases:

* Legal disclaimers
* Standard greetings
* Error messages
* Instructions
* System notifications

{% hint style="info" %}
I**mportant considerations:**

* Messages never vary - same text every time
* Keep content clear and concise
* Update manually when changes needed
* Consider using LLM Response for more natural interactions
  {% endhint %}


# LLM Response

The LLM Response node enables AI-generated responses based on context and instructions.

Unlike fixed Text responses, LLM responses adapt to the conversation while following your defined parameters.

#### Setting up LLM responses:

A single LLM Response node can be used to create the Minimum Viable Flow. Simply connect the Start node to a LLM Response with general system instructions. In such a case, there is no need to connect the LLM Response further to any node – each user's input will trigger the Start and the single LLM Response node with all the existing conversation context and the conversation will keep going, naturally.

<figure><img src="/files/m82Wa4Vd3uGRebamEp97" alt=""><figcaption><p>The simplest flow with LLM Response</p></figcaption></figure>

1. Select the LLM model to use
2. Provide system instruction (what the response should achieve)
3. Add any additional context beyond the conversation history

Example for filling in the Context:

Additional Context can help guide the LLM to keep the responses under certain limit of words – this makes the responses more brief and dynamic and they are easier for users to follow.

<figure><img src="/files/F3dx6GsCkp9RFKVMFpI9" alt="" width="375"><figcaption></figcaption></figure>

For more complex flows:

{% hint style="info" %}
If you plan. to add follow-up nodes after LLM Response, consider using a Checkpoint (with "Wait for user input) option enabled) to take the next user's input from there. Otherwise, LLM Response does not wait for user's input and any subsequent nodes will be executed immediately.
{% endhint %}

<figure><img src="/files/LP4SL9KT6OTj6CcMVijy" alt=""><figcaption><p>Example of a complex flow with LLM Responses</p></figcaption></figure>

#### Common use cases:

* Natural conversations
* Dynamic responses to queries,&#x20;
* Contextual explanations
* Personalized interactions
* Complex information delivery
* Follow-up discussions

{% hint style="info" %}
**Important considerations:**

* Clear instructions guide better responses
* Additional context helps predictability
* Conversation history is included automatically
* Different models may respond differently
* Test responses with various inputs
* Monitor response quality and appropriateness
  {% endhint %}


# Call ConvAI

The Call Conv AI node integrates external conversational AI services into your flow.

This node allows you **to connect with third-party chatbot platforms,** custom NLP engines, or specialized conversation services when you need capabilities beyond the built-in LLM options.

#### Setting up Conv AI connections:

1. First, make sure you configure the external service connection (in "[Configurations](/dashboard-management/configurations/conversational-engines)" section)
2. Set up any required authentication

<figure><img src="/files/FJXEKC737rLUK1vfFjdH" alt=""><figcaption><p>Call Conv AI node</p></figcaption></figure>

#### Common use cases:

* Specialized chatbot integrations
* Custom NLP processing
* Industry-specific AI services
* Legacy system integration
* External recommendation engines


# Behavior wip

The Behavior node controls your virtual being's animations, like gestures and emotions (e.g. happy), adding non-verbal communication to interactions.

<figure><img src="/files/PVYfKf2nRkgy5ASp3QdN" alt=""><figcaption><p>Behavior node configuration</p></figcaption></figure>

#### Configuration options:

1. Gestures
   * Add specific animations
   * Control timing
   * Sequence multiple gestures
2. Emotions
   * Set emotional states
   * Control intensity
   * Transition timing

List of gestures (only) available for Kiosk touchpoint:

```
  | 'applause'
  | 'big'
  | 'bored'
  | 'cheer'
  | 'defense'
  | 'generic_a'
  | 'generic_b'
  | 'generic_c'
  | 'heart'
  | 'hello'
  | 'in'
  | 'many'

  | 'movement'
  | 'one'
  | 'whatever'
  | 'self'
  | 'wave'
  | 'welcome'
  | 'you';
```


# Behavior

The Behavior node controls your virtual being's animations, like gestures and emotions (e.g. happy), adding non-verbal communication to interactions.

{% hint style="warning" %}
Currently only working for SDK use on Unity and Unreal.
{% endhint %}

{% hint style="info" %}
Support for remaining touchpoints coming soon.
{% endhint %}


# Action nodes

**Action** nodes handle user interactions and data collection, helping guide users through structured conversations. These include:

* Collect User Data
* Quick Reply
* Cards from Table

<figure><img src="/files/n61mAGSm23tyWOIXCRdv" alt="" width="242"><figcaption><p>Action nodes</p></figcaption></figure>


# Collect User Data

The Collect User Data node gathers and stores specific information from users during conversations.

It provides structured data collection with validation and storage capabilities.

#### Setting up data collection:

1. Define the question to ask the user
2. Choose where to store the collected data (this is a variable that can be used later on in LLM Response node's instruction).
3. Select appropriate input type for validation
4. Configure "Skip if value exists" to avoid repetition

Example: Collect user's email if they requested to be contacted by a human team member:&#x20;

```
Question: "What's your email address?"
Store in: user_email
Input type: Email
Skip if exists: Enabled
```

<figure><img src="/files/qIR4L9w6pIFfrGYxgfZr" alt=""><figcaption><p>Example of Collect User Data</p></figcaption></figure>

#### Common use cases:

* Contact information
* Order references
* User preferences
* Account details
* Support ticket info
* Survey responses

{% hint style="info" %}
**Important considerations:**

* Use clear, specific questions
* Consider privacy implications
* Check existing values before asking
* Verify data storage
* Plan error handling
  {% endhint %}


# Quick Reply

The Quick Reply node presents users with predefined response options, guiding the conversation through specific choices.

This creates a more structured interaction while ensuring valid inputs.

#### Setting up quick replies:

1. Write the question to present to users
2. Add response options (buttons)
3. Choose whether to save the selected reply as end user variable (called "end user store")
4. Configure if follow-up input is needed

Example:

```
"Which topic are you interested in?"
Options:
- Product Features
- Pricing Plans
- Technical Support
- Contact Sales

Save reply: Enabled (stores selection for later use)
```

<figure><img src="/files/IqC7PKnWQGQeaAJ3gfzM" alt=""><figcaption><p>Example of Quick Reply node configguration</p></figcaption></figure>

{% hint style="info" %}
Remember to connect all the exit points, including "Not matched"!
{% endhint %}

<figure><img src="/files/w3fwexSHwRkzPs0uFA0w" alt="" width="563"><figcaption><p>Quick reply node: save user's reply in end user store</p></figcaption></figure>

#### Common use cases:

* Menu selections
* Confirmation requests
* Multiple choice questions
* Navigation options
* Category selection
* Yes/No decisions

{% hint style="info" %}
**Important considerations:**

* Keep options clear and concise
* Limit number of choices (3-5 recommended)
* Use consistent formatting
* Consider button display space
* Plan response handling
* Maintain conversation flow
  {% endhint %}


# Cards from Table

The Cards from Table node displays images from your data tables in a visually appealing card format. Cards are interactive elements that will be displayed in the touchpoint interface (web widget or kiosk) and that users can interact with (click on) during conversations.

#### Setting up cards:

1. Select source data table
2. Choose image column
3. Select name/title column
4. Configure sorting options
5. Set up filtering if needed

Example:

```
Data Table: Product catalog
Image (to display on the card): Product photo
Name (will be displayed on the card): Product name

Filter settings:
- Filter by: Product name
- Condition: Equals
- Match By: Context Variable
- Variable: {{user.product}} (previously stored user selection)
- Max records: 1 or more for multiple options, depends on the use case
```

<figure><img src="/files/R9a54lKrwbsL0vk4g1Ad" alt=""><figcaption><p>Example of Cards from Table configuration</p></figcaption></figure>

Consider filtering the results shown on cards based on user's previous inpur saved as variable:

<figure><img src="/files/vX60mjloMFczOYG8CXft" alt="" width="375"><figcaption><p>Cards from Table: add filtering based on user's previous inpur saved as variable</p></figcaption></figure>

#### Common use cases:

* Product listings
* Service options
* Plan comparisons
* Team member profiles
* Location details
* Event schedules

#### How are cards displayed on the touchpoints:

* Web

<figure><img src="/files/TFZ41mOf975WoHclKoK1" alt="" width="188"><figcaption><p>Cards on web widget (floating)</p></figcaption></figure>

<figure><img src="/files/uLsJRHha3LMeRiatHNIP" alt=""><figcaption><p>Cards on web widget (fullscreen)</p></figcaption></figure>

* Kiosk

<figure><img src="/files/91gLWVGPyWOQ5QFd9JfD" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
**Important considerations:**

* Ensure data table is properly structured
* Select relevant display fields
* Configure visual elements carefully
* Test card appearance across devices
* Consider loading performance
* Plan user interactions with cards
  {% endhint %}


# Context nodes

**Context** nodes access your information stored in Data tables, ensuring accurate data retrieval, and adds it to conversation context for more accurate response generation.

* [Find Record(s)](/dashboard-management/conversation-flows/nodes/context-nodes/find-record-s)

<figure><img src="/files/hYCcyQ58W2ITEMjPbkaS" alt="" width="231"><figcaption><p>Context nodes</p></figcaption></figure>


# Find Record(s)

This node queries your [Data tables](/dashboard-management/data-tables), retrieving specific information based on defined criteria.

#### Setting up Find record(s)&#x20;

1. Select how many results to return (single or multiple)
   1. If multiple, provide the number of records
2. Select in which table to search for records
3. Select  sorting preferences (by recency or random)
4. Name the variable to store found records as

<figure><img src="/files/l0jv6L2mWINGAf1XDImp" alt=""><figcaption><p>Example of Find record(s) node</p></figcaption></figure>

Add filtering based on user's input collected earlier:

<figure><img src="/files/Pu6QvM59ejCHkoTYf5Ms" alt=""><figcaption></figcaption></figure>


# Integration nodes

**Integration** nodes connect your virtual being to external systems and services, extending its capabilities beyond the platform. These include:

* [Call Webhook](/dashboard-management/conversation-flows/nodes/integration-nodes/call-webhook)
* [Custom Action](/dashboard-management/conversation-flows/nodes/integration-nodes/custom-action)

<figure><img src="/files/Q9MQPAvLHJu5TNON9WPV" alt="" width="232"><figcaption><p>Integration nodes</p></figcaption></figure>


# Call Webhook

This node enables integration with external services through HTTP requests.

Setup options:

* HTTP method selection
* URL configuration
* Request body definition
* Header management
* Response handling

<figure><img src="/files/YH44hZuzJtJ8dfmLXlBl" alt=""><figcaption><p>Example of Call webhook node</p></figcaption></figure>


# Custom Action

The Custom Action node allows for specialized operations and system integrations.

Features:

* Named actions
* Value passing
* Custom logic integration
* System interaction

<figure><img src="/files/fTX2lKV5nVFh6SW38Yhk" alt=""><figcaption><p>Example of Custom Action node</p></figcaption></figure>

Custom Action can be used to pass events to your website to trigger specific features. Requires adding the handling to the code of your website. It can also be used when working with our Unity ir Unreal SDKs.


# Troubleshooting Conversation Flows

Common Issues and Solutions

**Flow Not Progressing**

**Symptoms:**

* Flow stops unexpectedly
* No response from virtual being
* Seems stuck at a particular node

**Common Causes and Solutions:**

1. Wait for User Input enabled unintentionally
   * Check toggle settings in each node
   * Verify flow progression logic
   * Ensure proper node connections
2. Missing node connections
   * Verify all nodes are properly connected
   * Check for disconnected paths
   * Ensure all conditions have corresponding paths
3. Conditional logic issues
   * Verify If/Else conditions
   * Check signal values
   * Ensure all cases are handled

**Inconsistent Responses**

**Symptoms:**

* Unexpected responses
* Missing context
* Incorrect flow paths

**Solutions:**

1. Context issues
   * Check conversation history preservation
   * Verify context variables
   * Review checkpoint placement
2. LLM configuration
   * Review system instructions
   * Check additional context
   * Verify model selection
3. Intent matching problems
   * Refine intent descriptions
   * Add more trigger examples
   * Adjust confidence thresholds

**Integration Failures**

**Symptoms:**

* Webhook errors
* External service connection issues
* Missing data

**Solutions:**

1. Webhook configuration
   * Verify URLs
   * Check authentication
   * Validate request format
   * Test endpoints independently
2. Data table configuration
   * Verify data availability in tables
   * Verify query conditions in nodes
   * Check formats and validation criteria
3. Custom action issues
   * Validate action names
   * Check value passing
   * Verify system integrations

**Performance Issues**

**Symptoms:**

* Slow responses
* Delayed transitions
* Timing inconsistencies

**Solutions:**

1. Flow optimization
   * Simplify complex branches
   * Reduce unnecessary nodes
   * Optimize LLM usage (use faster LLMs for quesries and better quality LLMs for response generation)
2. Connection issues
   * Verify network stability
   * Check service status
   * Monitor response times

#### Debug Techniques

**Using Preview Mode**

1. Test flow in real-time

   * Use web widget preview
   * Monitor flow progression
   * Verify node execution&#x20;
     * Go to "Conversations" tab and toggle on "Show system messages"
     * Click on the relevant node execution message to go to that node in the Conversation flows

   <figure><img src="/files/cNgKmgUm3xPRaazYYVWJ" alt="" width="563"><figcaption><p>Verify node execution in Conversations tab</p></figcaption></figure>
2. Check system signals
   * Monitor signal generation
   * Verify signal handling
   * Test conditional logic

**Flow Analysis**

1. Visual inspection
   * Review flow structure
   * Check node connections
   * Identify potential loops
2. Logic validation
   * Verify conditional paths
   * Test edge cases
   * Check default behaviors
3. Context tracking
   * Monitor conversation state
   * Verify checkpoint behavior
   * Test state restoration

#### Edge Cases to Consider

1. **Unexpected User Input**
   * Handle empty responses
   * Manage invalid data
   * Process unexpected formats
2. **Integration Failures**
   * Provide fallback responses
   * Handle service outages
   * Manage partial data

#### Prevention Strategies

1. **Testing Protocol**
   * Test all paths regularly
   * Verify edge cases
   * Validate integrations
   * Check error handling
2. **Flow Design**
   * Maintain organized layout
   * Document complex logic
   * Plan for failure modes
3. **Monitoring**
   * Track common issues
   * Monitor performance
   * Log error patterns
   * Review user feedback

#### When to Seek Support

Contact technical support when:

1. Persistent flow issues despite troubleshooting
2. Unexpected system behavior
3. Integration problems with external services
4. Performance issues affecting user experience


# Other conversational engines

#### Integration with Popular Conversational Engines

Virbe seamlessly supports integration with several widely-used conversational engines, enhancing its versatility and use case applicability. Below are the conversational engines that Virbe is compatible with:

* **Dialogflow**: Empower your Virbe bots with Google's renowned conversational AI.
* **Botpress**: Leverage the power of an open-source conversational AI with Virbe.
* **Microsoft Bot Framework**: Integrate Microsoft's comprehensive bot-building platform for a unified experience.
* **Jovo**: Utilize the flexibility of Jovo to extend your bot's capabilities across multiple platforms.
* **Rasa**: Harness the power of Rasa for advanced natural language understanding and conversation management.
* **Custom Engines**: Virbe's API allows for the integration with custom-made engines, providing endless customization possibilities.

Each of them is further described in the subsequent chapters.


# Dialogflow

Turn your exisiting Dialogflow project into Virbe.

## Import Google Dialogflow ES chatbot&#x20;

If you want to use Dialogflow ES chatbot as Conversational AI for your Virbe you need to create or use an existing GCP service account and import the access credentials into your Virbe Dashboard.

### Check your Dialogflow project ID

Head out to Dialogflow ES console and check your Agent settings.

![Dialogflow Essentials Console](/files/TmVzE4DClQ3KxD3Pp1bD)

Copy your Project ID from the "**General**" tab and head on to our Virbe Dashboard (e.g. <https://being-name-your-organization.virbe.app/dashboard/conversation-engine/edit>) then paste your Project ID into the Virbe Dashboard.

![Dialogflow Essentials Console](/files/VLlpc3mQi61tVwgLaYNJ)

![Virbe Dashboard](/files/tFaAI3hm6HE8dyFaIGAp)

Come back to your Dialogflow console and this time click on the Project ID to navigate into Google Cloud Console. Head on to the next section [#generate-a-gcp-service-account-key-json](#generate-a-gcp-service-account-key-json "mention")

### Generate a GCP Service Account Key (JSON)

Once you're logged into Google Cloud Platform, head out to the Service accounts section.

![GCP](/files/dxTB3s5JCfwkmhD05WTB)

Create a new Service Account with permission to Dialogflow integration or use an existing one defined in your Dialogflow project. Having done that, click on the "Manage Keys" in drop-down menu to the right. Then use the key in the Virbe Dashboard.

![GCP](/files/6F52cfxl6DppvoijrHT6)

Use an existing key or create a new JSON key and save it on your computer (NOTE. You can invalidate an old Key at any time and import a new one into the Virbe dashboard).

![GCP](/files/7tWJY0zR5nPbJu2gmQ0z)

Open the JSON Key on your computer in any editor you like (e.g. Notepad or IDE) and copy-paste the contents into the Virbe Dashboard.

{% hint style="info" %}
Do not worry, this content is stored only in your dedicated cloud container. Only people you authorize will have access to its content. At any point, you can invalidate it into the Google Cloud Console.
{% endhint %}

![Virbe Dashboard](/files/XSws6B1HUYEbS1LqjMTR)

Once you do the above please use the built-in web widget to test your configuration. If you've done everything right you should see and hear the response. If you haven't, your Virbe will let you know that something went wrong.

![Virbe Dashboard](/files/0dMn9zdVKfnsHn4lMqAD)

{% hint style="warning" %}
For any issues with the above sections please refer to the original [Dialogflow setup documentation ](https://cloud.google.com/dialogflow/es/docs/quick/setup)or contact our support through our Discord or email: <hello@virbe.ai>
{% endhint %}

## (Advanced) Virbe Behaviours and UI components

If you want to add Behaviours to your Virbe (e.g. gestures and emotions) or custom UI, you can do so by adding a Custom Payload to your Virbe's responses.

![Dialogflow Essentials Console](/files/gNPkzbVzGfGP1plogZTA)

{% hint style="info" %}
If you add or reorder the Custom Payload, so it's returned before the text, then it will be played at the beginning of your Virbe's Speech. If you add it after, then Behaviours and UI components will be displayed after the Virbe stops speaking the text.
{% endhint %}

Here's the sample JSON, which works with our Web, Unity, and Unreal integrations.

```
{
  "payload": "virbe",
  "action": "shop_item",
  "data": {
    "behaviours": [
      {
        "type": "gesture",
        "duration": 2000,
        "name": "you"
      }
    ],
    "ui": [
      {
        "type": "button",
        "title": "Yes",
        "payload": "Yes"
      },
      {
        "type": "button",
        "title": "No",
        "payload": "No"
      },
      {
        "type": "card",
        "title": "Jacket",
        "image": "https://virbe-shop-demo-bucket.s3.eu-central-1.amazonaws.com/hitoshi-namura-kRO6Uxe0ZFI-unsplash-1603121847489.jpg",
        "price": "100$",
        "payload": "/addtobasket"
      }
    ]
  }
}
```

If you add this, it will enable your Virbe to do the following:

* play "you" animation, so your Virbe will point to the user
* display two quick reply buttons:  "Yes" and "No"
* display a rich card with a title, price, and an image

![Virbe Dashboard](/files/OFy4UjKPjTd5uXnrvqfH)

### Virbe Behaviours and UI components in Custom Payload

To learn how to use Custom payload to customize Virbe plugins check out the general section on [Broken mention](broken://pages/QocI1vH8ArkCqWtP1AkD)

## (Sample) Try out Dialogflow Virbe Sample Project

Coming soon


# Botpress

## Installing Botpress

To start your Botpress integration, you need to have your own instance up and running. There are three ways of doing that:

* Download and install an [Open Source](https://botpress.com/download) instance of Botpress. You will find all the information needed to have an online instance ready to go on the website. If you don't know how to use docker composer, we will provide a step-by-step guide soon.
* Go with the [paid version](https://botpress.com/pricing) of Botpress – fees are project- and user-based. In that case, hosting will be provided by Botpress.
* Go with Virbe – we can set it all up for you! Just contact us and let us know what your needs are! We will give you custom pricing for that.&#x20;

## Botpress setup for Virbe: virbe-payload module

Once you have a Botpress instance up and running, in order to make it work with Virbe payload, you need to download a [plugin file](https://drive.google.com/file/d/1Vnae-6WVBsM7k3kweXF18hu2ulssh58A/view?usp=sharing) and import it into the Botpress admin panel as a new module.

![Upload module in the Botpress admin panel](/files/n2PqonRlXfjZKEHzOLfY)

![The module has to be enabled](/files/lQ8kCjiia2hFKtShuSJu)

## Create your first chatbot

Now, you're ready to create your first chatbot. You can either create a new chatbot from scratch or import an existing project.&#x20;

![Start from scratch or import an existing project](/files/bLX9BgeZkVxXCwTb7JBT)

![Pick a name and a unique ID for your chatbot](/files/m69579VSS50sN4AAB7IV)

## How to design conversation flow with Botpress?

Once you have your bot ready for "data and text input" we suggest you [see our last webinar](https://youtu.be/ic-yt0m7mHY) where one of our experts gives an excessive tour through the Botpress dashboard.&#x20;

**Conversation design process**

{% embed url="<https://youtu.be/ic-yt0m7mHY>" %}

**Working with Botpress**

{% embed url="<https://youtu.be/ic-yt0m7mHY?t=2354>" %}

If you want to learn more you can go directly to [Botpress youtube channel with tutorials](https://www.youtube.com/c/Botpress/playlists).

## Connect your chatbot to Virbe Hub

To connect your Botpress project to Virbe Hub, copy the configuration information of your selected chatbot in Botpress and paste it in Virbe Hub:

* "Botpress Origin" - your Botpress instance URL
* "Botpress Bot ID" - your chatbot's unique ID

![Botpress origin](/files/tPxYuVGL9qA9Cns14gZ8)

![Bot ID](/files/UJoxR1ib560UdW3uZQZs)

![Paste information to Virbe dashboard](/files/W0oVZeBrD6XMD5iOgX8g)

## All set! You can deploy and test your being!


# Microsoft Bot Framework

Make sure you have a successfully published Microsoft Bot in Azure Cloud. If you do head out to [#publish-your-bot](#publish-your-bot "mention") section. If you don't continue reading.&#x20;

### Create your bot

Use Botframework Composer to create and manage your chatbot.

<figure><img src="/files/C4p6hSl5cvWkgswm5MYj" alt=""><figcaption></figcaption></figure>

**QuickStart**: Use this tutorial: <https://learn.microsoft.com/en-us/composer/quickstart-create-bot> .

{% hint style="warning" %}
If you're using LUIS and/or QnA (eg. when you use Core Assistant template) make sure to also enable and configure their credentials in the 'Configure' tab.
{% endhint %}

<figure><img src="/files/mlrz1hnkUWWRFffI4oNm" alt=""><figcaption><p>Azure QnA Maker configuration</p></figcaption></figure>

<figure><img src="/files/6gNRGYAEiJsSLok0peJM" alt=""><figcaption><p>Azure Language Understanding (LUIS) configuration</p></figcaption></figure>

### Publish your bot

* In Botframework Compose, make sure to create Publish Target and publish created bot to your Azure Cloud.

<figure><img src="/files/w5Cf40lsiW6EVHd1XKm5" alt=""><figcaption></figcaption></figure>

* Once your Bot is published, head to your [Azure Console Bot Services](https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/AppliedAIHub/~/BotServices), select your deployed Bot, and Enable "Direct line" channel.

<figure><img src="https://mail.google.com/mail/u/0?ui=2&#x26;ik=da30a81594&#x26;attid=0.1&#x26;permmsgid=msg-a:r-8345254315710113832&#x26;th=18337d8e39b93a49&#x26;view=fimg&#x26;fur=ip&#x26;sz=s0-l75-ft&#x26;attbid=ANGjdJ8pi506bQWuI5o8z48eOL0_brm3zsWchZClX2twi3DVzv9D377K4OIeKNpZI_fFCgj2CLiFaR5wlXJD_NXF2wqktqC8OgbkRt3cwOuQsbQ5vbbyVPYC_OEhd_E&#x26;disp=emb&#x26;realattid=ii_l80gbove0" alt=""><figcaption></figcaption></figure>

* Use "Default site" or create a dedicated "New Site" (version 3.0) and copy one of the generated 'Secret Keys' in your Being Dashboard

<figure><img src="https://mail.google.com/mail/u/0?ui=2&#x26;ik=da30a81594&#x26;attid=0.2&#x26;permmsgid=msg-a:r-8345254315710113832&#x26;th=18337d8e39b93a49&#x26;view=fimg&#x26;fur=ip&#x26;sz=s0-l75-ft&#x26;attbid=ANGjdJ_ejc3oiXhVqtAohwuBoIdYxuX8sQyQyhYKbvLFhs1ovtj4yf0eapygnLkizQfEOXmq7aCrORgwwSCRJgfTIgGlb_1DNGRCTtDLJ3i-QiNeTCYU1EZPx4Bfbsc&#x26;disp=emb&#x26;realattid=ii_l80gefqr1" alt=""><figcaption></figcaption></figure>

### Configure your engine in Virbe Dashboard

* Head out to your dashboard, select "Free flow engine" and select "Change Conversation Engine" : <https://your-url.virbe.app/dashboard/conversation-engine/edit>

  <figure><img src="/files/GEEKWXSDZ2QtgQMcyhFp" alt=""><figcaption></figcaption></figure>
* Paste copied Secret key to Microsoft Bot Framework configuration view<br>

  <figure><img src="/files/OEt7tmttl12EbjqcyJ5D" alt=""><figcaption></figcaption></figure>

Your being will from now on use your Microsoft Bot as conversational AI. Test it out in Web widget, Virbe Beings Mobile App or in Virbe Digital Signage app.


# (Obsolete) Custom Chatbot Engine V1

## Setup

To enable a custom engine you have to adapt to the Virbe request/response schema, which is described below. You might want to use one of our boilerplate projects as a reference.

* **(Python) FastAPI boilerplate project**
  * [**https://github.com/VirbeHQ/virbe-custom-engine-fastapi**](https://github.com/VirbeHQ/virbe-custom-engine-fastapi)&#x20;

## Schema

{% openapi src="/files/NZLwx4SmOTdTVRR7l0Mw" path="/api/v1/room" method="post" %}
[openapi-custom-chatbot.json](https://1213579860-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MaU7JJyoXT5PfhTD9dJ%2Fuploads%2FwW5qfr5p3gBMglZ00Eq6%2Fopenapi-custom-chatbot.json?alt=media\&token=585e9ab3-3e4c-4d62-a73c-76e82fecc2b1)
{% endopenapi %}

### RoomMessageRequest&#x20;

* **`id` -** this is a unique message identifier - you can use it as the **`replyTo`**  field when posting asynchronously to the room
* **`endUserId` -** this is a unique identifier or the user that posted to a particular room conversation - it persists through multiple conversations as long as the user allows for that eg. cleaning a browser cache will clear this value when using a web widget. You might want to implement your own caching mechanism when using our SDKs.
* **`room` -** this object contains all the information of the created Room conversation.&#x20;
* **`location`** - this object contains all the information about the touchpoint that End User is interacting from:
  * **`name` -** it contains the name of the location you've created in the Virbe Dashboard for your own instance or one of the prebuilt touch-points names: `Dashboard, VirbeSpace, Mobile, LivePreview`
  * **`channel` -** defines the type of location created in the Virbe Dashboard:&#x20;
    * Predefined Channels: `LivePreview, Dashboard, Mobile, VirbeSpace`
    * User Registered Channels: `Web, Kiosk, Widget, Unity, Unreal`
* **`action` -** this object is the one you need to check to implement your own logic for handling
  * **`text` -** this is main object you want to analyze and react to in your engine
    * **`text` -** this contains the text recognized by Speech Recognition or the text written by end user to your Virbe
    * **`language` -** this contains the language recognized by Speech Recognition or the language set in the touchpoint configuration
  * **`endUserStore`** - this object is passed if end user submits the input form
    * **`key` -** key to store your value under
    * **`value` -** value to store
  * **`namedAction`** - this is the field which is used for signals & triggers eg. widget open, app launch, face detection in the Metahuman Kiosk, QR Code scan etc. You might want to implement your own logic of reacting to this kind of events
    * **`name` -** name of the trigger: `widget_open, app_launch, face_detected, being_defocus, being_focus`
    * **`value` -** additional string value eg. describe your payload type here to parse it properly
    * **`valueJson` -** additional Json object passed through your implementation eg. IoT sensors values
  * **`roomStore`** - you don't need to react to it most of the times unless you want to store a specific key/value pair when the SDK is starting eg. you want to write and store specific value during new room conversation creation
    * **`key` -** key to store your value under
    * **`value` -** value to store

### RoomMessageResponse

If you want your Virbe to speak out loud you need to respond with **`text`** action in the schema.&#x20;

* Responding with Text - Make sure to respond with the following schema

<pre class="language-json"><code class="lang-json"><strong>{
</strong>  "action": {
    "text": {
      "text": "This is the text Virtual Being will speak back",
      "language": "en-US" // The voice configuration for Speech Generation
    }
}
</code></pre>

* Responding with Text and UI components

```json
{
  "action": {
    "text": {
      "text": "Do you like any of these products?",
      "language": "en-US" // The voice configuration for Speech Generation
    },
    "uiAction": {
      "name": "virbe-payload-v2" // Check out the documentation to learn all supported UI components
      "value": {
        "buttons": [
          {
            "label": "Yes"
            "payloadType": "text" // or "namedAction"
            "payload": "Yes" // Value to send to Conversational engine when clicked
          },
          {
            "label": "No"
            "payloadType" : "text"
            "payload": "No" // Value to send to Conversational engine when clicked
          }
        ],
        "cards": [
          {
            "title": "Product A", 
            "imageUrl": "http://asset-store-domain.com/product-a-image.jpg",
            "payloadType": "text", // or "namedAction"
            "payload": "Tell me more on Product A" // Value to send to Conversational engine when clicked
          },
          {
            "title": "Product B", 
            "imageUrl": "http://asset-store-domain.com/product-b-image.jpg",
            "payloadType": "text",
            "payload": "Tell me more on Product B"
          },
          {
            "title": "Product C", 
            "imageUrl": "http://asset-store-domain.com/product-c-image.jpg",
            "payloadType": "text",
            "payload": "Tell me more on Product C"
          }
        ]
      }
    }
  }
}
```

* Responding with text and storing user email to the EndUserStore. Check out the documentation how to invoke an integration pipeline (Hubspot, ActiveCampaign) or a custom webhook call when EndUserStore key/value pair is stored

```json
{
  "action": {
    "text": {
      "text": "Thanks for the email. My manager will get back to you soon.",
      "language": "en-US"
    },
    "endUserStore": {
      "key": "email",
      "value": "end-user-email@user-domain.com"
    }
  }
}
```

### Asynchronous Room Message

Asynchronous communication is a perfect solution to improve UX when you have a long-running chain logic for LLMs (eg. ChatGPT) or human-handover scenarios.&#x20;

* Acquire **`Room Actions Api Key`** from the Virbe Dashboard - you will find it on the **Conversation Engine** tab eg. <https://your-virbe-dashboard.virbe.app/dashboard/conversation-engine>&#x20;

<figure><img src="/files/iH88vT1UXh2x2g19XoxW" alt=""><figcaption><p>Virbe Dashboard - Custom Chatbot Engine View</p></figcaption></figure>

* React to RoomMessageRequest by creating a task that will be processed asynchronously eg. in a separate thread pool or queue.

{% @github-files/github-code-block url="<https://github.com/VirbeHQ/virbe-custom-engine-fastapi/blob/main/app/task.py>" %}

```
# FastAPI background task example

@app.post("/api/v1/room/async", response_model=RoomConversationResponse)
def room(request: RoomConversationRequest,
         background_tasks: BackgroundTasks):

    if request.action and request.action.text:
        background_tasks.add_task(
            prepare_async_response_on_text,
            request,
        )

    return RoomConversationResponse(
        action=RoomMessageAction(text=RoomMessageTextData(text="Let me think for a moment..."))
    )
```

* Use **`RoomMessageIngest`** schema to send **`POST`** request to the room asynchronously using the following endpoint:&#x20;

`https://{your-virbe-dashboard-url}/api/v1/rooms/{request-room-id}/messages/api`

**Request Body Schema:**

```json
{
  "replyTo": "d64d99b5-249a-4495-8a89-73ebd674b2de", # Message Id from RoomMesseageRequest
  "endUserId": "f0354d62-95a1-41ec-9e87-b0089addeda0", # EndUserId from RoomMessageRequest - make sure to set it if you're using EndUserStore
  "senderId": "custom-chatbot-async", # or any other value you want to see later in logs
  "action": {
    "text": {
      "text": "This is the text Virtual Being will speak back asynchronously",
      "language": "en-US" // The voice configuration for Speech Generation
    }
}
```

You can post multiple responses to one request if you want to. To send other actions check the section [above](#roommessageresponse).

For a more detailed example scenario check out the sample code in our Github:

{% @github-files/github-code-block url="<https://github.com/VirbeHQ/virbe-custom-engine-fastapi/blob/main/app/task.py>" %}

### Human handover

* Stop responding automatically and pass all RoomMessageRequest to your system eg. Slack channel or your own software
* Start posting asynchronously to the room conversation using [asynchronous messages](#asynchronous-messages-and-callbacks) described in the previous section

##


# AI prompt

Filling in the AI prompt is fairly easy, but it's important to take into account that this is also **the core of the virtual being's personality.** It's a base and vital context for their every interaction with end users.

<figure><img src="/files/Ayz16nnCs23iBpTeTXRw" alt="AI Editor AI prompt"><figcaption><p>AI prompt in AI Editor</p></figcaption></figure>

The most important things you need to know about this part:

1. **Identity fields** (name, age and role): they already constitute an important base for the virtual being's approach towards users. For example, if you specify their role as "Fashion Stylist" or "Personal Assistant" their approach will lean more into a direction of being helpful and assisting people. If you prefer a virtual being who is more compelling when speaking about your brand or events, consider giving them a role such as "Brand Ambassador", or "Company Enthusiast".
2. **Bio**: this should be a brief bio of a virtual being. It will help them understand their background better, but also they will use it when introducing themselves.
3. **Role and purpose:** this field is **very impactful.** \
   Here, describe the virtual being's main goals and motivations, such as:\ <mark style="background-color:yellow;">`"My goal is to understand the user's issue better and suggest a solution".`</mark>\
   \
   The more descriptive you will be in the desired behavior, the better. You can even suggest a loose structure for the virtual being to follow, for example: \
   `"(...). In order to do that I always ask 3 questions from my questionnaire to better understand the problem, and only then I move on to suggest next steps".`\
   \
   Also, it's a good idea to narrow down the main topics your virtual being is comfortable with: these will be the first they will default to or propose as conversation topics. For example:\
   `"I mostly talk about my company's products and solutions, but I also like discussions about fashion and games".`
4. **Extra facts**: this is a long field (up to 4,000 characters), where you can add all the other pieces of information that you believe your being should have at hand to provide the best responses. These may include some basic information about the company or more details about their role, you can provide more context to the instructions from the previous field.\
   \
   For example, let's fill that in with the "Questionnaire" mentioned above:\
   `"Questionnaire:`\
   `1. When did the problem occur?`\
   `2. Have you tried contacting the delivery service?`\
   `3. Is your subscription active?"`\
   \
   In this field you can also add some additional behavioral rules, such as:\
   `"Rules:`\
   `I don't discuss politics.`\
   `I'm always polite, although I like to crack a joke from time to time.`\
   `I generate responses of up to 50 words."`\
   And whatever else you feel like you should instruct your virtual being to do. \
   **Don't be afraid to play around with this, add stuff as you test, and be creative!**<br>
5. **Additional note:** your **writing style in the prompts above may affect the speaking style** of the virtual being, so play around with this as well. Try to be more or less formal, very to the point or more creative with your descriptions, use slang or jargon – your choice!

Below you'll find an example of a filled-in prompt for a Ski Expert and Salesperson!

<figure><img src="/files/BjLFe4VUYuGx4psO3Ssp" alt=""><figcaption><p>Filled-in AI Prompt: Ski salesperson use case</p></figcaption></figure>

***


# Knowledge Base

In Knowledge Base you can provide the virtual being with all the important information and content that is specific for your use case and needs. The virtual being will use this content to provide the most truthful and relevant responses based on the user's input as well as the context of the conversation.

{% hint style="info" %}
(If you're into AI tech like we are, you might find plenty of online resources regarding the core philosophy behind creating functional knowledge bases under the term "RAG", or Retrieval Augmented Generation, for example [by LangChain here)](https://python.langchain.com/docs/use_cases/question_answering/).
{% endhint %}

<figure><img src="/files/kqCgQztoAdfan1hJIEVP" alt=""><figcaption><p>Knowledge organized into Collections and Documents</p></figcaption></figure>

### Building your Knowledge Base

Knowledge Base in AI Editor is made of Collections and Docs.

**Collection** is a group of Docs, most likely related to each other. This organization will allow you to manage the content easily by dividing your information into smaller content pieces, Docs, grouped into corresponding categories – Collections.

**Document**, Doc for short, is a content item in the Collection that **contains text as well as images.** The text field accepts up to 10,000 characters. When adding images, there's an additional text field for the description of the image.&#x20;

<figure><img src="/files/vnkGzBl5rORawwjoPu6X" alt=""><figcaption><p>Example: A Document in the "Snowboards" collection</p></figcaption></figure>

{% hint style="info" %}
It's important to include information on what is depicted in the image – this will allow the virtual being to **select the most relevant images during the conversation and display them contextually.**
{% endhint %}

<figure><img src="/files/8p97laixQgvf40ZUHIee" alt=""><figcaption><p>Adding an image to a Document</p></figcaption></figure>

***


# Voice / Language

The virtual being's ability to talk to people comes from the combination of two technologies: Speech Recognition (Speech-To-Text or STT) and Speech Generation (Text-To-Speech or TTS).

In Virbe Dashboard it's necessary to select the STT & TTS configuration, which means selecting the languages in in which the users will be speaking (STT) and languages/voices the virtual being will be responding in. \
\
In case of STT it's enough to just select the language.

In case of TTS the configuration comprises of two parts:&#x20;

* TTS engine (selecting from a list of different engine), and
* a specific voice in a specific language.

#### Good news! You're not bound to just one language.

In selected plans, we support recognizing and generating multiple languages simultaneously which means your virtual being will be able to switch between the languages. Currently, depending on the plan you're subscribed to, we support from 1 to 5 languages simultaneously. In any case, always make sure to set a default language to the one you're expecting the most.

<figure><img src="/files/cKezDJz899wE07v3blI0" alt=""><figcaption><p>Click add another configuration to add more languages</p></figcaption></figure>


# Speech Recognition (STT)

Speech-To-Text or STT is the technology we use to understand human speech. Currently, we support one STT engine, that also allows for recognizing the user's language on the go (depending on the plan you're subscribed to, the languages supported simultaneously range from 1 to 5 languages).\
Always make sure you set a default language to the one you're expecting the most.


# Speech Generation (TTS)

Text-To-Speech or TTS allows the virtual being to utter their response in a selected voice in a given language.

Currently, we support the following TTS engines:

* Azure Cognitive
* Prerecorded Audio
* Amazon Polly


# Kiosk Apps

Check out the digital signage offering on our website: [Virbe solution for Digital Signage.](https://virbe.ai/product/digital-signage)

In this section, you will learn all [hardware ](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup)and [software ](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/operating-system)requirements and hints on how to prepare a working setup.


# Metahuman Kiosk

The latest **Metahuman App** can be downloaded here: \
\
[<mark style="background-color:blue;">**Download Latest Kiosk Release (Windows)**</mark>](https://drive.google.com/drive/folders/1M55acR6syj4udS_SoB9HurOYWk8x--T0)

In order to start using the app with your own Virbe, you'll need a "Configuration link" that will authorizes and import all the settings appropriate for your Profile.  Make sure you have the proper touchpoint-type [Profile configured](/dashboard-management/profiles) first.&#x20;

1. If your profile is ready to be deployed, copy the "Configuration link" from the Profile's deployment tab and use it in the Virbe Metahuman kiosk app.

<figure><img src="/files/rAcijKD5F8IcVzy5MsYM" alt=""><figcaption><p>Copy the Configuration link from Profile</p></figcaption></figure>

2. Run the Virbe Metahuman kiosk application on a compatible Windows computer (read more in the [Hardware section](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup)).
   * First launch of the application:
     * Select the "I have my Virbe" option on the startup screen that appears on the first launch of the app

<figure><img src="/files/B0FJI1n2rL86Q7dPvXeo" alt="" width="375"><figcaption><p>First launch of Metahuman kiosk app</p></figcaption></figure>

* Subsequent launch of the application:

  * Tap three times in the bottom right corner to reveal app settins. Click on "Change configuration URL"

  <figure><img src="/files/kVDBso3I8FlrpokcUXKE" alt="" width="375"><figcaption><p>Change configuration URL in the sidebar settings</p></figcaption></figure>

3. Input the Configuration link you copied from the dashboard

<figure><img src="/files/RQJ41qyvNHQeoLcpwOqn" alt="" width="375"><figcaption><p>Input Configuration link</p></figcaption></figure>

***

### Working Metahuman kiosk app:

{% embed url="<https://virbe-landing-prod-assets.s3.eu-central-1.amazonaws.com/files/Virbe_video_mix_c78c62c58c.mp4>" %}
Working Metahuman kiosk app
{% endembed %}

<div><figure><img src="/files/43bkctXt1p9iZQfoASlC" alt=""><figcaption></figcaption></figure> <figure><img src="/files/Xw7pmRwgnXbHEsDGJag0" alt=""><figcaption></figcaption></figure> <figure><img src="/files/zdhMQ2OFMg2eleJawP00" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Metahuman Kiosk currently runs Windows. Recommended requirements are listed on the [Hardware Setup](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup) page.
{% endhint %}

## App Installation (Windows)

To install the application on Windows you need to do the following:

* [Download the latest Metahuman Kiosk version](https://drive.google.com/drive/folders/1M55acR6syj4udS_SoB9HurOYWk8x--T0)

{% hint style="warning" %}
The app is not yet signed by any AppStore certificate, so sometimes it might be treated as a potential threat by Antivirus software.

* To solve the issue: go to system settings->Windows Security->**Virus & threat protection->Allowed Treat->** Protection History-> chose "*VirbeMetahumanSetup.exe"* file and "*Allow*"
  {% endhint %}

* **Run VirbeMetahumanSetup.exe**
  * Your computer may ask you to install Microsoft Visual C++ Runtime component. Allow and proceed - this will install the required Unreal Engine components
  * after that, your installation of the Metahuman app will continue and create a desktop shortcut

<figure><img src="/files/Vq8H7LdCDyZK8ROYYRkW" alt=""><figcaption></figcaption></figure>

* **Run the shortcut from your desktop**
  * allow for internet and network connection also in local networks
  * enjoy!


# Hardware setup

In order to make your Kiosk App work smoothly, you will need a certain hardware setup.

The right hardware setup will assure your Kiosk App works smoothly, your Virtual being hears everything and is heard properly and all external signals come right to the place they should come. We recommend reading the whole guide before running the Kiosk App.

{% hint style="info" %}
If you wish to run the Kiosk App right away go to[ the Recommended setup](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/recommended-setup) page.
{% endhint %}

{% content-ref url="/pages/Z79IAeltLNcTCOpQ44LL" %}
[Recommended setup](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/recommended-setup)
{% endcontent-ref %}

{% content-ref url="/pages/26h6p9D6tXELppFyMfmB" %}
[Computer](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/computer)
{% endcontent-ref %}

{% content-ref url="/pages/u6UYQUeqMf01QG0rfvRb" %}
[Screen](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/screen)
{% endcontent-ref %}

{% content-ref url="/pages/PsPknIs6g9vJ9wylfjAp" %}
[Microphones](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/microphones)
{% endcontent-ref %}

{% content-ref url="/pages/Auo4YFxUvE1DEfV0Y09r" %}
[IoT](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/iot)
{% endcontent-ref %}

{% content-ref url="/pages/ZEGHNbLQTAUL32S0aUeV" %}
[Peripherals](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/peripherals)
{% endcontent-ref %}


# Recommended setup

In the below section, you will learn the minimum recommended hardware set-up for Kiosk App.

## Minimum recommended setup for Kiosk App:

* **Computer**: In order for the App to run smoothly you have to use a computer with **minimum requirements**:  Core i7-1165 / 16GB RAM  / 128GB HDD/SSD / nVIDIA GTX 2060 with 6 GB GDDR6. It might be a gaming laptop, or mini PC like [Intel NUC Phantom Canyon](https://simplynuc.eu//phantom-canyon/). It also works on regular PC's.

{% hint style="warning" %}
If you wish to use ready-to-go Digital Signage Solution (like prebuilt Kiosk Device), the built-in, regular Intel NUC will probably not be powerful enough to handle the Kiosk app smoothly. This applies especially to the Metahuman version of the App.&#x20;
{% endhint %}

* &#x20;**Screen:** The kiosk app may run on any screen (tested on up to 75'). For the best experience, it should be a touchscreen, although it will also run on regular screens (like laptop screen).

{% hint style="info" %}
You should use a vertical screen orientation, otherwise, you may not be satisfied with how your Virtual Being looks on the screen.
{% endhint %}

* **Microphone**: you can use any kind of microphone with the kiosk app. But directional microphone or dedicated Kiosk microphones should work best - check out [microphones section](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/microphones). Proper setup of microphones is covered in detail in [Microphone settings](/touchpoints/kiosk-apps/metahuman-kiosk/customer-experience/microphone-settings) section.

{% hint style="info" %}
Microphone set-up is crucial for the success of your Kiosk App project - go ahead and read the whole [Microphones section](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/microphones).
{% endhint %}

* **IoT**: in the basic setup no IoT devices are required. If you wish to add external signals as in-app triggers, go through [IoT section](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/iot).&#x20;
* **Peripherals**: good loudspeakers are essential, and those are the only peripherals that you need to run the App.&#x20;


# Computer

You want the Kiosk App to look good and run smooth. Rule number one: use the proper GPU.

Both Unreal Metahuman and other quality 3D models require high-performance GPU in order to run smooth. If you wish to run other applications on the machine, also RAM and god CPU are required.

## Computer components should meet below requirements:

**Processor (CPU)** -  Core i7-1165 or equivalent from AMD is a minimum requirement. Using Core i9 or equivalent is the preferable option.

**Graphic Card (GPU)** - GeForce RTX 2060 with 6 GB GDDR6 or equivalent is a minimum requirement. For the best experience, stable work and no overheating we recommend  RTX 3060 (12 GB), or equivalent.

**RAM** - Minimum requirement is 16GB. Recommended 64GB

**Disk** - 128 GB is a must. In order to run smooth and silent SDD is preferable.

{% hint style="warning" %}
**SIZE MATTERS** and **HEAT MATTERS -** if you wish to use the App in a digital signage solution (like a self-standing Kiosk) you should keep in mind that not all computers will fit behind the screen, and proper heat management is crucial for long-term operation.
{% endhint %}

{% hint style="info" %}
**And what if I have an Apple Mac machine?** For Metahuman Kiosk we do not recommend using Apple Mac. For Unity Kiosk App the Apple Mac Mini with M1 silicone and 16GB RAM  is a good choice - you will have a smooth experience.
{% endhint %}

## **Recommended machines**&#x20;

* [**Intel NUC** **Phantom Canyon**](https://simplynuc.eu//phantom-canyon/) **-** best value for money and suitable for Digital Signage due to small size. RTX 2060 onboard. Usually requires buying additional RAM and SDD. It meets only the minimum requirements, so you will not get the best experience and it will get quite hot if operating 24/7.

<div><figure><img src="/files/78gfywG0ZRBBNCrz9xfk" alt=""><figcaption><p>NUC Phantom with 55" screen</p></figcaption></figure> <figure><img src="/files/rr6phb6cAlbGpTWajLbx" alt=""><figcaption><p>NUC Phantom size comparison</p></figcaption></figure> <figure><img src="/files/9r1JNv1hj2LOQcPUzsTd" alt=""><figcaption><p> NUC Phantom Canyon</p></figcaption></figure></div>

* [**Intel NUC Dragon Canyon**](https://simplynuc.eu//dragon-canyon/) **(extreme)** - expensive and requires customization. Fits only to certain digital signage solutions. Comes with top parameters and performance, and keeps low temperature.&#x20;
* **Any gaming laptop** - suitable for digital signage solutions. Usually not recommended for 24/7 operation and might experience cooling issues.
* **Any mini tower PC** - will be suitable for certain digital signage solutions. Requires good research and customization.
* Any other PC - requires a lot of space so not suitable for digital-signage (unless the main Unit is stored separately and connected with long and high-quality HDMI). Good price and performance.
* [**Apple Mac Mini M1/16GB**](https://www.apple.com/mac-mini/) - small, quiet and cool. Recommended only for Unity App.


# Screen

Any screen will handle the App. But you can make it look really impressive if you chose it wisely.

## Size

The Kiosk App can be launched on any screen size. It was tested on 15'-75'. We found out that using 33'-55' screen size is a safe choice for most use cases.

## Resolution

We strongly **recommend using Full HD (1920 x 1080 pixels) resolution**. If you choose a screen with a lower resolution, you might not be fully satisfied with the quality of the rendering of the avatar. Higher resolutions (e.g. 4K) will require stronger GPU & CPU and were not tested in our lab.

## Orientation

We recommend using vertical screen orientation - this makes Virtual Being fit the screen perfectly and allows to use the whole screen size.

## Touch

It is possible to launch the Kiosk App both on touchscreens and regular screens. However if you wish to use [press-to-talk](/touchpoints/kiosk-apps/metahuman-kiosk/customer-experience/vad-and-press-to-talk) or any other "clickable" content (like cards or links) it is essential to use a touchscreen.&#x20;

{% hint style="info" %}
**Touchscreen** is a must if you wish to use [press-to-talk](/touchpoints/kiosk-apps/metahuman-kiosk/customer-experience/vad-and-press-to-talk) button.
{% endhint %}


# Microphones

Choosing the right microphone setup will enhance your customer experience

## Introduction

You can use any kind of microphone with the kiosk app. But, in order to provide the best experience for your users, you have chose the right microphone type and setup. We suggest two approaches:

* go through our guide below,
* hire a professional to figure it out for you.

## Microphone types

There is a number of microphone types, but we will focus only on a few of them. You can find many guides in the internet (like [this one](https://www.premiumbeat.com/blog/6-microphone-pickup-patterns-every-filmmaker-should-know/)) that will help you understand the topic. In general, for purpose of capturing and processing human speech, we will use a [unidirectional or cardioid microphone](http://www.learningaboutelectronics.com/Articles/What-is-a-directional-microphone) that is designed specifically to capture the sound that is coming from one specific direction. There are a few microphone setups that were tested and are listed in the next section.

## Recommended setups&#x20;

1. **Headset with microphone -** simple and reasonably priced, this setup will be perfect for personal experience and quite loud environment. You can go with [any setup](https://www.amazon.com/wireless-headset/s?k=wireless+headset) (wired and wireless), but if you wish to cut out external noise use [dedicated dynamic headset.](https://www.shure.com/en-US/products/microphones/wh20?variant=WH20QTR)  **Cons**: you need to put in on your head, often wired, lack of seamless experience.
2. [**Dynamic microphone**](https://www.musicradar.com/news/best-dynamic-microphones) - dynamic microphones are a perfect choice for very noisy environments.  If you decide to use a [traditional, stage dynamic microphone](https://www.dpamicrophones.com/mic-university/how-to-mic-vocals-with-handheld-mic-on-stage) it will cut off all unwanted voices and work even in a very noisy environment. The disadvantage is however, that you will need to be very close to the microphone and it might form a "stage barrier" for your end users.
3. [**Shotgun microphone**](https://musiciannerd.com/articles/best-shotgun-microphones) - those are very specific microphones that can [pick up a sound from a distance. ](https://www.youtube.com/watch?v=h3LSEnI3ko0)Those need XLR wire and an audio interface with [phantom power.](https://en.wikipedia.org/wiki/Phantom_power) In exchange you will get a perfect setup for VAD, as those microphones may pickup the sound only from a chosen spot and angle from a distance (e.g 2 m from your device).
4. [**Gooseneck microphones**](https://www.audio-technica.com/en-us/commercial-audio/microphones/gooseneck/es925-ds5) - those are microphones dedicated to picking up a voice on conferences. Usually offer a good sound quality and fine cut-off of external voices. Have to be plugged in through an audio interface, and require to be really close to (like dynamic microphones).
5. **Specialized microphones** - those are dedicated solutions to work with voice recognition software, like a small microphone attached to the kiosk frame: [Andrea Communications PureAudio-AI DA-250Q](https://andreaelectronics.com/da-250q-array-microphone-digital-signal-processor/) or [Andrea Array USB mic](https://t.sidekickopen01-eu1.com/s3t/c/5/f18dQhb0S7kC8dDT2YV34nh759hl2VN1Mk_njHV8VTW3GZHxF1S329gN1Y_qtb7WBPdf2Tmd9202?te=W3R5hFj4cm2zwW3zdYTq3K1KPCW3K2B3443TClrW4cg7sG3_rgLMW49HT3G3_VqrMF43Vrc9mLcs1\&si=8000000022141553\&pi=56702709-2fcc-4da0-999a-a14228b81b6e).  Those solutions have a build-in noise and echo canceling software and are tuned specially to provide the best voice recognition experience. The allow the user to be approximately 1m from the microphone.

<div><figure><img src="/files/hYdrbK2FIqBUqghe8pJe" alt=""><figcaption><p>Andrea Array USB mic - size</p></figcaption></figure> <figure><img src="/files/eCHMxJMWu7DxAQBgoitF" alt=""><figcaption><p>Andrea Array USB mic - overview</p></figcaption></figure> <figure><img src="/files/vSHqfgHa3YMgPNVpczGQ" alt=""><figcaption><p>Andrea Array USB mic with 55' screen</p></figcaption></figure></div>

Please note that those are setups that are recommended by Virbe. There might be other setups that will work fine. If you work on one, feel free to consult with us or let us know what results you managed to get!

## **Wired or Wireless?**

Your choice - both will work fine. Most of modern microphones will be able to work both wired and wireless. Wireless is much more comfortable, but might be more expensive and needs charging.

## USB, XLR or mini-jack?

All of above-mentioned microphones might occur in different plugin setups. In general there are a few things that you may consider:

* **mini jack** - most popular, plugs directly into yours computer soundcard. So be carecareful - your soundcard quality affects the sound quality! If you have a very good mic and low quality integrated sound card, than the final effect might be not as good as you would expect. In that case consider using high quality [USB soundcard](https://www.bestproducts.com/tech/gadgets/g1422/external-sound-cards-for-pc-or-mac/).&#x20;
* **USB** - USB microphones bypass your soundard, so as good as the microphone is, that good the sound quality will be. In general modern USB microphones are consider almost as good as XLR microphones. One disadvantage might be a lack of option of boosting the input over 100% (but this will not apply to all USB mics).
* **XLR -** classic choice. XLR wiring is used in the music industry for decades. Considered most versatile and highest sound quality. In order to make it work you will need to buy an [audio interface, ](https://www.amazon.com/Computer-Recording-Audio-Interfaces/b?ie=UTF8\&node=11973691)but it will give you the widest choice of microphones (shotguns, goosnecks, dynamic, etc...). XLR audio interface will have the widest range of sound level input.

## Where to put the microphone?

Choosing the right location for your microphone might be as important as choosing the microphone type. In general, the microphone should be in a position to pick up your client's voice best. And ONLY your client's voice.

For **headset microphones** the situation is simple - the headset should be on your client's head. **Dynamic microphones** should be close to your client's mouth. One way to do it is to use stage stands like in the example presented below. **Shotgun microphones** should be in general located away from the person who is speaking. You can put it above the monitor, under the ceiling, on the wall, etc. **Gooseneck microphones** are designed to be put on a table, but they may be as well mounted on a chair, on the wall, or attached to the screen. Remember that the microphone itself has to be very close to the mouth of the person speaking. **Specialized microphones** (like Andrea beamforming array) could be located more far away from the client. In the case presented below it is attached to the side of the screen, but they can be also located on the top or on the bottom of the screen.

<figure><img src="/files/zcJ3zrTgXq6T5Ww3kuZd" alt=""><figcaption><p>Dynamic microphone set-up</p></figcaption></figure>

<figure><img src="/files/fq1UGGOAu8uHduUyDvcC" alt=""><figcaption><p>Specialized mic (Andrea beamforming array) location</p></figcaption></figure>

{% hint style="danger" %}
For the vast majority of situations, you will need a microphone that will pick up only the sounds you want, so we recommend using directional microphones. A detailed setup (type of microphone, levels, location) will **always** be a unique case.
{% endhint %}

{% hint style="info" %}
If you have your **own microphone setup that you want to share** with us , write directly to <support@virbe.ai>.
{% endhint %}


# IoT

You can trigger your virtual being with IoT signals. Check it out!

In order to trigger your virtual being with external signals from IoT on Windows (e.g. open window, movement, light), you need a set of hardware and [software](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/operating-system/windows/openhab). There is a number of devices and communication protocols that you can utilize ([guide for interested](https://www.emnify.com/blog/iot-connectivity-comparison-guide#:~:text=Connectivity%20is%20a%20critical%20component,functions%20they%20were%20designed%20for.)). We build our solution on the basis of a few components that communicate through Zigbee protocol:

* [Conbeee II ](https://www.phoscon.de/en/conbee2)- USB Zigbee gateway (needed to connect IoT Devices)
* Any IoT device from [list of compatible devices](https://zigbee.blakadder.com/deconz.html)
* Once you have yous hardware setup check out [how to work with it](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/operating-system/windows/openhab)


# Peripherals

There are peripherals that you **need to have** and there are peripherals that you **may have**.

**Good Quality Wires** - I couldn't emphasize more, **how important good quality wires are.** This applies to HDMI, USB extensions (e.g. for microphones), power wires, and audio wires. If you wish to avoid troubles, buy quality wires!

***Camera**  - your virtual being will be able to detect people soon. We will keep you updated.*


# Operating System

In this section you'll learn how to set up your computer's operating system for maximum efficiency of Virbe kiosk app operation.

{% content-ref url="/pages/2pdzWqXOLDTv6hEvARkh" %}
[Windows](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/operating-system/windows)
{% endcontent-ref %}

{% content-ref url="/pages/rBULJpsTCjxWcRzt05VS" %}
[Mac](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/operating-system/mac)
{% endcontent-ref %}

{% content-ref url="/pages/gTxlBzI8MYbhPcKS6kV1" %}
[Remote Access](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/operating-system/remote-access)
{% endcontent-ref %}


# Windows

In general we recommend Windows 10 professional or windows 11 professional to run the App. **The tutorial is prepared for windows 10 professional.**


# Login & power management

if you want to start the App automatically when you plug in the computer, you have to be sure to set up three parameters in your windows settings.

1. **Automatic login without password requirements**
   1. **If you install new windows** on a machine - simply DO NOT set any password for your account
   2. **If you already have Windows** installed on your machine
      * make sure you have only one account on your machine
      * Open the Registry Editor using \[Windows] + \[R] and “regedit”.
      * Enter *HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\PasswordLess\Device*.
      * Double click on “DevicePasswordLessBuildVersion” and set the value to “0”
      * Open User Accounts using \[Windows] + \[R] and “netplwiz”.
      * Uncheck the box beside “Users must enter a user name and password to use this computer”.
2. **Automatic start of the App after login**
   * Press "windows+R" on your keyboard  ➝ in the "Run" window type in "*shell:startup*" and pres enter.
   * A folder will open with your startup items. **Copy a shortcut** to Virbe app to the folder. Done!
3. **Automatic startup after power failure (e.g. unplug)**
   * Power On your computer and press "DEL" or "F1" or "F2" or "F10" to enter BIOS (CMOS) setup utility. (The way to enter into BIOS Settings depends on the computer manufacturer)
   * &#x20;Inside BIOS menu, look under the following menus to find for a setting named “Restore on AC/Power Loss” or “AC Power Recovery” or "After Power Loss".  The “Restore on AC/Power Loss” setting can be found under different places inside BIOS setup according to computer manufacturer.
   * Set the “Restore on AC/Power Loss” setting to “Power On”.

{% hint style="info" %}
Take a look on your microphone settings - set up the right one as a "default microphone" in the system settings.
{% endhint %}


# Other

1. **Kiosk Mode**

You can use [Kiosk Mode](https://learn.microsoft.com/en-us/windows/configuration/kiosk-single-app) in Windows 10 & 11 Pro, which will allow you to run only one/multiple apps in a safe mode. However, from our experience, if you provide remote access to the machine (e.g. with Zoho Assist or TeamViewer), and turn off Edge Swiping (see below!!!) then you do not need to set up Kiosk Mode for Windows

1. **Edge swiping - turn it off!**

If you use Windows machine and a touchscreen, then the edge swiping in windows will be automatically on. This means, that **anybody can exit the Kiosk App if swipes** the edge of the screen. To prevent that, you should turn off the edge swiping in  group policy editor.

If you're running Windows 10 v1803 or later, you'll need to do the following to disable edge swipes:

In Windows, right-click the Start button and select Run.

1. Type **gpedit.msc** and press **Enter**. If you can't find gpedit, here's an [alternative solution](https://www.tenforums.com/tutorials/48507-enable-disable-edge-swipe-screen-windows-10-a.html#option2).
2. Navigate to **Computer Configuration>Administrative Templates>Windows Components>Edge UI** for system-wide, or **User Configuration>Administrative Templates>Windows Components>Edge UI** for current user.
3. Edit **"Allow edge swipe"** and set to Disabled.
4. Click **Apply** then **OK**.


# OpenHab

If you wish to use IoT (like motion sensor), you will need to set up additional software.

In order to connect an [IoT device](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/iot) to your setup, you will have to install additional software on your machine. If you decided to work with Conbee II Zigbee gateway to connect your [IoT ](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/iot)devices, below you will find a fast guide on how to connect it.

## **OpenHab**

OpenHab is a software for home automation, that lets you use IoT devices (Bluetooth, Zigbee, WiFi).

1. Install java (at least v11): <https://www.azul.com/downloads/?package=jdk#download-openjdk>
2. Check the version of java: "cmd"➝ "java -version"
3. Set up environmental variables:
   1. Open **Control Panel** and go to **System and Security** → **System**.
   2. Click **Advanced system settings**.
   3. On the **Advanced** tab, click the **Environment Variables** button.
   4. In the **System Variables** area, select the `Path` environment variable and click **Edit**.
   5. In the dialog that opens, add the `bin` folder of your Azul Zulu installation (the directory where you unpacked the `.zip` file). Make sure the `bin` folder is placed at the top of the list
4. Go to <https://www.openhab.org/docs/installation/> and download
5. Launch the runtime by executing the script `C:\openHAB\start.bat` and wait a while for it to start and complete.
6. Point your browser to [`http://localhost:8080`](http://localhost:8080). You should be looking at the openHAB page requesting you to set up an administrator username and password.
7. In order to run it on windows startup: follow instructions: <https://www.openhab.org/docs/installation/windows.html>

## [dEConz app - make your Conbee II work](https://www.home-assistant.io/integrations/deconz/)

1. instal dEConz app and go online (<http://192.168.8.104>)
2. Creat account and logi to the app
3. In order to make it work with OpenHab:
   1. download DeConz app in OpenHab
   2. in DeConz online app go to: settings➝gateway➝authenticate app
   3. Click "authenticate app"
4. In order for automation to work dEConz app should be ON all the time.

## **Troubleshooting**

1. In case Conbee II cannot connect (contanair error): open openHAB in you browser➝ pause and play deCONZ (conbee II app)

{% hint style="warning" %}
In order to prepare and run the automation with IoT device go to our [Discord group](https://discord.gg/wK9Xj2CwqX) and ask on how to create a script, as this is very case-sensitive.
{% endhint %}


# Mac

## **Login, security, power management:**

1. system preferences➝security & privacy: turn off "Disable automatic login"
2. system preferences➝security & privacy: turn off "require pasword after sleep or screen saver"
3. system preferences➝security & privacy: keep login/user password (safety reasons)
4. system preferences➝security & privacy: allow app store and identified developers
5. system preferences➝Desktop & Screen saver: turn off screen saver
6. system preferences➝mission control: turn on "when switching to an applicatipon, switch to a Space with open window"
7. system preferences➝battery➝\[laptop only, while on battery]: Turn off display after "never"
8. (laptop only) system preferences➝battery: turn off "automatic graphic switch" + turn off "slightly dim the display" + turn off "Optimise video streaming"
9. system preferences➝battery➝power adapter: Turn off display after "never"
10. system preferences➝security & privacy➝advanced➝turn on "require administrator password to acess system-wide preferences"

## **Touch drivers**

1. For iyama monitors go to [link](https://iiyama.com/f/07e9710dc80e8405c8a3b09d1531296f_mac-os-driver-for-os-version-10-and-11-updd-06-00-729.zip): download and install drivers
2. For other touchscreen providers please follow manufacturers guidelines&#x20;

{% hint style="danger" %}
Not all touchscreens will work seamlessly with Apple devices. Refer to manufacturers guidelines for more details.
{% endhint %}


# Remote Access

Take control of your devices. Remotely.

If you wish to have control over your Kiosk devices, you should use software that will allow you to remotely control and troubleshoot your devices. We recommend bellow software, but you can use any kind of remote support software.

* [Zoho assist](https://www.zoho.com/assist/)
* [teamwiever](https://www.teamviewer.com/)


# Customer Experience


# VAD & press-to-talk

How you will y listen to your customer?

Once you have up ready and set up on a device, you will have to choose how will you listen to your customer? You can either use VAD (Voice activity detection), or PTT (press-to-talk) button in the screen.&#x20;

**VAD -** it allows for more natural conversation as the virtual being is listening all the time and answers all the questions without any additional interaction from the user. You will notice a status change on the app - if the microphones pics up human speech the status will change from "Start Talking" to "Listening" and "Processing". This is the most natural form of communication with virtual beings.&#x20;

One variation of this solution involves using wake-up-word such as "Hey Siri" or "OK Google", but at the moment this feature is unavailable.

However, this solution means that virtual being will listen to every phrase that the users say and may pick up other people talking in the room. It requires very precise microphone setup and is not recommended for very noisy or crowded locations.

{% hint style="info" %}
**Pros:** natural communication, no other interaction requires

**Cons:** hard to set up, sensitive to other people speaking, not suitable for noisy environment.
{% endhint %}

**PTT (press-to-talk) -** press-to-talk is a virtual on-screen or physical button that has to be pressed (continuously) by the user in order for it to start capturing human speech. If the button is on the touch screen this will imply that the user will be close to your microphone set up. Due to this you may be less accurate with microphone settings. Also, less unwanted noise will be captured by microphones as they will be active only for a certain period of time (while speaking).&#x20;

On the other hand, this solution might be less intuitive for humans, and requires additional action (pressing the button).

{% hint style="info" %}
**Pros:** easy to set-up, less unwanted speech caught by the microphones

**Cons:** less natural experience,&#x20;
{% endhint %}

{% hint style="warning" %}
If you work in a very noisy environment we strongly recommend using PTT over VAD.
{% endhint %}


# Microphone settings

Hear your consumer - set up your mic!

Once you choose your [hardware setup](/touchpoints/kiosk-apps/metahuman-kiosk/hardware-setup/microphones), it is crucial to choose the right settings for your hardware. It should be the right balance between how well it is capturing your client's voice and how well it is canceling unwanted background sounds.&#x20;

{% hint style="info" %}
Input/levels setup of your microphones is a state of the art and will be very case-sensitive. We recommend a trial and error process, as well as good testing methodology to find the right settings for your location and case.
{% endhint %}

## Enhancements?

[Nvidia Bradcast](https://www.nvidia.com/en-us/geforce/broadcasting/broadcast-app/), [ASUS noise canceling utility](https://www.asus.com/support/FAQ/1044576/), [Andrea PureAudio beamforming software](https://andreaelectronics.com/products/).

Above, are software solutions to help your microphone pick up less background noise and voices of other people that are in the room. They are free as long as you have a proper hardware (nvidia graphic card, Asus gaming computer, Andrea mic, etc.). We recommend using one of the solutions, but detailed setup is very case and hardware dependent.


# Avatars

The virtual beings created with our platform can come in many forms thanks to being integrated with Unreal's Metahuman technology.

## Avatars available out of the box

By default, our platform comes equipped with eight Metahuman avatars that are ready to be used right away. These avatars represent a range of genders and ethnicities to provide a diverse set of options for creating virtual beings. Among them, you'll find avatars with different skin tones, facial features, and hairstyles to suit your needs.

Take a look at the images below to see each of the available avatars and get a better sense of their unique qualities.

<figure><img src="/files/CXzJV6MWlQhJzJF4BoJR" alt="A screenshot of available Metahuman avatars"><figcaption><p>Available Metahuman avatars</p></figcaption></figure>

Below are examples of a close-up shots of the Metahuman avatars.

<figure><img src="/files/xKNSwWUKPXKTNyR9vFNd" alt="Leto – photo of a male avatar outdoor " width="563"><figcaption><p>Leto</p></figcaption></figure>

<figure><img src="/files/tyFXmOZ26ZHN7DTE30kM" alt="Stephen – photo of a male avatar outdoor " width="563"><figcaption><p>Stephen</p></figcaption></figure>

<figure><img src="/files/KFuYRoyqDgJxAHm5eg5O" alt="Anna – photo of a female avatar indoor " width="563"><figcaption><p>Anna</p></figcaption></figure>

## Import your own Metahuman

If none of the above default options are quite what you're looking for, don't worry – it's possible to import your own custom Metahuman avatar to the app.&#x20;

{% embed url="<https://www.youtube.com/watch?ab_channel=Virbe&v=FGABuMBL_Io>" %}


# Web Integration

You can use Virbe's web integration to embed created Virtual Being on your website. All changes that were saved are available instantly to all of the instances of your virtual being. For example, If you have created one virtual being and deploy him or her on to multiple pages, each instance will have access to the same conversational engine.

#### To use Virtual Being on your website you have to make sure that:

* Your virtual being is up and running - verify your [Profile](/dashboard-management/profiles) configuration
* Paste code snippet on your website. Either for Floating widget more or Embedded mode.
* Make sure that your domain is authorized in [Profile deployment ](#authorize-domains)settings.

You can embed your virtual being in two separate modes - Floating widget mode and Embedded mode.&#x20;

### Floating Mode

When using plugin mode your Virtual Being will appear on the website as a small avatar in the bottom right corner of the page. To initiate discussion user needs to click the avatar and the expanded version of the plugin will appear.

<figure><img src="/files/DiB7jltUDXEKBxFIftbr" alt=""><figcaption><p>Floating web widget on a website - collapsed</p></figcaption></figure>

<figure><img src="/files/g0kwRVUgrhsDh4PrOnt1" alt=""><figcaption><p>Floating web widget - expanded</p></figcaption></figure>

### Embedded mode

You can also embed your virtual being directly within the content of your website (not floating on top of it), it can even be embedded as a sole content of your website or in a fullscreen mode.

<figure><img src="/files/f5LcWQRcpOdUlVo7wraU" alt=""><figcaption><p>Fullscreen web component</p></figcaption></figure>

### How to use Virbe web widget on your website

To embed Virtual Being on your website head out to [Deployment tab in your Profile's settings](/dashboard-management/profiles). Select the mode you're interested in and you'll see one code snippet that you need to paste before the `</body>` of your website. Paste this code snippet on every page where you would like your Virtual Being to appear.&#x20;

<figure><img src="/files/mGdLD48Fuuq4DmFATUJx" alt=""><figcaption></figcaption></figure>

#### Authorize domains

{% hint style="info" %}
You need to **authorize your domain where you plan to embed Virbe's code snippet.**
{% endhint %}

Type in your high-level domain of a website on which you'd like to use Virtual Beings, either in Component Mode or Plugin Mode.


# Unity Integration

## Plugins&#x20;

Here's the Unity plugin you need to use when deploying Virtual Beings based on CC3, Daz and Ready Player Me characters:

* Virbe Core Plugin

{% hint style="warning" %}
Supports Unity 2020 or newer
{% endhint %}

### Virbe Unity Core Plugin

Download the latest Unity plugin from [here](https://drive.google.com/drive/folders/1BzofDLff-zkf7uJrrkLQi3yIqaT8neYt).&#x20;

## Import and Setup tutorials

{% content-ref url="/pages/QzDMzCUi3xTX6LP6m20t" %}
[Basic Setup](/touchpoints/unity/basic-setup)
{% endcontent-ref %}

{% content-ref url="/pages/aBQ9NUo6hWrsnXiLqo2K" %}
[Open Source Integration](/touchpoints/unity/open-source-integration)
{% endcontent-ref %}

{% content-ref url="/pages/Zb5Z9P1s5012CZTIwPmH" %}
[Advanced Setup for AR, VR, XR](/touchpoints/unity/advanced-setup-for-ar-vr-xr)
{% endcontent-ref %}

{% content-ref url="/pages/-MjFdxsJ5VhkmI396z7W" %}
[Ready Player Me Import](/touchpoints/unity/ready-player-me-tutorial)
{% endcontent-ref %}


# Basic Setup

## Import Virbe Core plugin&#x20;

{% hint style="info" %}
Virbe Unity plugin supports Unity **2020** and newer.
{% endhint %}

Import Virbe Core Plugin \[[download here](/touchpoints/unity)] into your project. Make sure your project Unity version is at least **2020.** If your Unity engine is older, try to reimport it into a new version (at least Unity 2020).

## 1. Import your model

Currently, our Unity SDK has the necessary animation controllers, including LipSync for general Humanoid-type models created with:

* Ready Player Me ([check out the import tutorial](/touchpoints/unity/ready-player-me-tutorial))
* Character Creator 3 (coming soon)
* Daz3D (coming soon)

{% hint style="warning" %}
Your model might have a very specific geometry, which might not look perfect using default controllers. In these situations, you might need to prepare the complete animation pack yourself. Use the provided animations as the reference.
{% endhint %}

## 2. Add and configure VirbeBeing prefab to the scene

After a successful import place `VirbeBeing<model_type>` prefab inside your scene hierarchy. It is already preconfigured with necessary dependencies to allow for quick setup, but feel free to tweak and customize it however you want. In the component, you will need to provide a being configuration file.&#x20;

![](/files/BsPCHQThhuc6E3ChQ8DZ)

You can download it from your Virtual Being dashboard under `Deployment Being - Unity`.

![](/files/cwP8F0qtXK0LzFanZnC7)

Once you do, import it into your Unity project and reference it in the component.

![](/files/I6rsVIhCAOZ8XrInZrn3)

## 3. Add references to audio source & animator

Your model has to be rigged and you should connect it to an appropriate Animation Controller (for quick setup, use one of the predefined ones).

You need also to add an Audio Source, preferably, to the jaw bone of your rig, so it will follow your character and generate a natural conversational User Experience.

![](/files/iSUMrJKZz1wYV4kdKd0V)

Once you have it properly configured, reference both things in the `Virbe Action Player` component.

![](/files/R5mBrm0R3bPSeHJgF8F1)

## 4. Add UI Layout prefab and connect Being Action events

First, make sure you have added `Event System` to the scene.

![](/files/JSUQJ7UczV3PPPiXD22H)

Drag and drop one of the predefined Layout prefabs: `Horizontal Layout` (if you expect to use your screen in horizontal mode) or `Vertical Layout` (if you predict to use it in vertical eg. mobile, kiosks).

![](/files/nEQZ9XZGdcLbe49kpjw8)

Reference your `VirbeBeing<model_type>` in a selected layout in the`Virbe Plugin UI Connector` component:

![](/files/4KYlFOVUbbLnb7B9S9z4)

and lastly, subscribe your Layout to Virbe Being Action events:

![](/files/jh3NX6miurfdwfMOaQJJ)

### First check-up - Demo time

Provided you have a valid subscription plan in Virbe Hub, with these 4 steps you will make your virtual being respond to users, and they should be able to interact with text input and/or quick reply buttons.

![](/files/RCe62OZEQqgK4Zfys45W)

{% hint style="success" %}
This is the end of the integration tutorial if you are using Presentation Mode subscription.
{% endhint %}

## 5. Use your voice to converse with a virtual being (not available in Presentation Mode)

{% hint style="warning" %}
This feature is not available in Presentation Mode. You need to have an Interactive plan, which has built-in support for Speech Recognition (STT).
{% endhint %}

Drag and drop Virbe `VoiceRecorder` prefab to the scene. Also, make sure your device has at least 1 microphone available.

![](/files/qPVhotCUZkUVxnRE67fI)

Reference your `VirbeBeing` component in VoiceRecorder

![](/files/CiJ6BwUW4Nn7ptb8pK8P)

Lastly, add a reference to VoiceRecorder in the previously selected layout.

![](/files/EknDzCDDCqnwksYXcc6Z)

### Demo time

Once you have all the things in place, save the scene and hit the Play button. You should be able to use your voice to speak to your voice.&#x20;

![](/files/RCe62OZEQqgK4Zfys45W)

## What's next?

With Unity, you can deploy your application to the following devices:

* Mobile (including Mobile AR with ARKit, ARCore)
* Desktop (including Digital Signage)
* VR (Oculus Quest, Rift, HTC Vive etc.)
* AR (Hololens, Magic Leap)

Once you build your customer interface with Virbe SDK, do not hesitate to let us know at <hello@virbe.ai> to get featured on our website.

## Troubleshooting

If you complete all of the steps from this tutorial and your Virtual Being is not responding make sure to check the following resources:

* [Join our discord](https://discord.com/invite/fKkp2pqWFn)
* [Check out our Youtube](https://www.youtube.com/channel/UCUF44Xj3IC5sbY5r1a-UBIA)
* [Write us an email](mailto:support+unity@virbe.ai)


# Open Source Integration

If you are using an open source version [Virbe Being Core Light](https://github.com/VirbeHQ/virbe-being-core-light), you will have to use the following Config file to configure the `VirbeBeing` component:

```
{
  "chat": {
    "enabled": true,
    "chatUrl": "http://localhost:8888/api/v1/chat",
    "origin": "http://localhost",
    "chatApiAccessKey": "47asdsa-1231-asdas-77fg"
  },
  "sttConfig": {
    "engine": "google-stt",
    "recordingChannels": 1,
    "recordingFrequency": 16000
  },
  "ttsConfig": {
    "engine": "amazon-polly",
    "audioChannels": 1,
    "audioFrequency": 16000,
    "audioSampleBits": 16,
    "audioType": "pcm"
  }
}
```

Save this JSON as TextAsset in your project `Assets/`, make sure you have locally launched the Docker containers with `./up.sh` script and hit Play to test how it works.\ <br>


# Advanced Setup for AR, VR, XR

Coming soon. Come to our webinar on 23rd July 2022 to learn more. Register here.

<https://share-eu1.hsforms.com/1aWZpVI3ARQqr4mL6sLGWAwfar6u>


# Ready Player Me Import

In this tutorial, you will learn how to setup your first Virtual Being Unity project based on Ready Player Me characters.&#x20;

{% hint style="info" %}
Before you start this guide make sure you have an existing and running instance of a virtual being at Virbe. If this is your first experience with Virbe tools head out to [hub.virbe.ai](https://hub.virbe.app/signup) to register and request a Virtual Being.
{% endhint %}

## 1. Import Ready Player Me Package

Create new blank 3D project in Unity and import [Ready Player Me package](https://docs.readyplayer.me/integration-guides/unity/unity-sdk-download) into your project. After successful import Avatar Loader should appear. Paste your custom 3D character link into the URL / Short Code field. If you don't have any RPM models yet head out to [Virbe Ready Player Me Creator](https://virbe.readyplayer.me/) to build your own avatar.

After providing URL or Shortcode into Avatar Loader in Unity click "Load Avatar". Your RPM model should appear inside the scene.

![Avatar Loader Plugin for Ready Player Me characters](/files/-MjFh9Th7J5-Zhhx6dfe)

## 2. Substitute a default animation controller with  Virbe RPM Animation Controller

Substitute a default animation controller with  Virbe RPM Animation Controller:

![](/files/fTRKiGxnd0Qim33zdp6B)

## 3. Continue the setup using the Unity basic setup tutorial

Continue the setup using [the Unity basic setup tutorial.](/touchpoints/unity/basic-setup)

## Troubleshooting

If you complete all of the steps from this tutorial and your Virtual Being is not responding make sure to check the following resources:

* [Join our discord](https://discord.com/invite/fKkp2pqWFn)
* [Check out our Youtube](https://www.youtube.com/channel/UCUF44Xj3IC5sbY5r1a-UBIA)
* [Write us an email](mailto:support+unity@virbe.ai)


# Unreal Engine (Coming soon)


# Metahuman Kiosk

\
Below, you can find some general guidelines:

1. The kiosk **is already linked to your Virtual Being** in the Virbe HUB. This means that all changes applied to you being in the dashboard (voice, convAI) will propagate automatically to kiosk settings.
2. In order to run the app just download the folder, unzip and run **"VirbeKiosk.exe**".&#x20;
3. Please note that in order for the app to run smoothly you have to use a machine with **minimum requirements**:  i7 / 16GB RAM  / 256GB HDD/SSD / nVIDIA GTX 1060
4. The kiosk app may run on a large screen (tested on up to 70').
5. A few words about the microphones:

* Microphone: you can use any kind of microphone with the kiosk app.
* Settings of the microphone (4) will be different for each hardware setup and environment.
* If you wish to use the kiosk in a very noisy environment, we suggest two setups:
  * stage microphone: any dynamic stage mic (like Fame Audio MS 58 MKI) + Behringer Uphoria U-2 sound interface. For detailed setup contact us directly.
  * small microphone attached to the kiosk frame: Andrea Communications C1-1021450-100 PureAudio USB-SA External Digital USB Sound Card with Superbeam Array2S Microphone Bundle.  For detailed setup contact us directly.

For the app itself (numbers from the photo explained below):

* (1): 3D Avatar: in the beta version of the app there are only two models available - use button (1) to toggle. In order to change your voice from male to female, you have to go to the web dashboard.
* (2): You can choose if you want to use "voice detection mode" or the "press to talk" button (the touch screen is useful in this mode)
* (3): Settings: a window (4) pops up
* (4): you can choose your voice input and level (level one is the most sensitive, level 10 is the least). This setting is crucial for proper voice recognition engine work. Also setting will vary depending on the microphone and environment. **HINT**: check your system settings - mic input should be set to 100% for best results.&#x20;
* (5): In this field, you will see what the Virtual Being understands (speech description) - useful to determine if your microphone input is set properly and also to monitor the overal performance.&#x20;
* (6): Depending on the mode (2) you chose to use:
  * in "press to talk" this button is used whenever you want to talk to the avatar.
  * in "voice detection mode" this field is used to monitor the status (changes to "listening" when voice is detected).&#x20;
  * in both modes this button may be used to stop Virtual Being talking.
  * Sometimes (usually when plugging in a new microphone), you will have to restart the app in order to make it work in the app.

![](/files/cV9FgRBMWLfRlTN1vwGg)


# Mobile app (AR/Video)


# VR/AR Summit Hackathon Guidelines

Welcome to the VR/AR Summit Hackathon Guidelines! Virbe's team will be more than happy If you incorporate virtual beings into your excellent idea. This guide will provide you with basic information on how to create and set up virtual being for your project.

#### 1. Get access to Virbe platform

During the Hackathon, all of the participants will get access to the Virbe platform. Go to the login page and create your account.

#### 2. Create your first Virtual Being - Apearance

After you log in, you'll be presented with the dashboard where you can create and customise your first Virtual Being. The creation process consists of three steps: appearance selection, skillset selection (conversational engine), summary.

Currently, Virbe platform supports three types of Avatars. Custom Virbe characters, [Ready Player Me](https://readyplayer.me/) characters - Cross-game avatars from Wolf 3D - and [Unreal Meta Human](https://www.unrealengine.com/en-US/digital-humans) characters. For the purpose of this Hackathon we have limited selection of 3D avatars to Ready Player Me characters to provide as much customisation as possible while limiting unnecessary trouble shooting.

In the first step of Being Creation, pick Ready Player Me import option. This is where you're going to import your Ready Player Me Creation.

![Firs Impression - Select Ready Player Me Import](/files/-MjDrxtk_pWaAP5-rR5Q)

![Import Screen for Ready Player Me Avatars.](/files/-MjDs7s_NaEKHTx6GSeC)

Head out to <https://virbe.readyplayer.me/avatar> to create your custom avatar. When you're happy with your creation **click Next** and generate link to your characters model. Account creation is optional in this step.

![virbe.readyplayer.me/avatar - Create your avatar and export a direct link to the 3D model](/files/-MjDsFjzcI5squjktB9p)

Inside Virbe Panel, paste the link of your generated 3D model, pick a name for your character and chose a voice. When you're done **click Next** and proceed to the next step.

![Properly imported Ready Player Me avatar into the Virbe Panel](/files/-MjDtKAEafG2E6z6SDOk)

#### 3. Create your first Virtual Being - Conversational Engine

In the next step, you can pick the conversational engine that will be used to support knowledge of your virtual being. During this Hackathon we suggest to use **Google Dialogflow** conversation engine. This will provide you the greatest flexibility and reduce unnecessary \[Steps ?]. If you have access to your own custom chatbot already feel free to use it instead.

![Supported Conversational Engines](/files/-MjDuaLS5BkXrJbMh7RZ)

After selecting Google Dialogflow head out to \[Link] and setup your first Dialogflow project.&#x20;

After creating your first project paste Project ID and project API Key into the Virbe Platform.

#### 4.Create your first Virtual Being - Summary

On the summary screen, you will see a quick overview of your Virtual Being and available subscription plans. During the Hackathon feel free to **use the Trial plan**, which is **completely free for 14 days**. You don't need to provide any payment information. When you're ready click Next to save this Virtual Being.

**Important:** due to our policy we have restricted the number of generated trial virtual beings to one per user. You won't be able to create multiple virtual beings for free. However, you'll be able to modify your already created trial being.

#### 5. Launch your Virtual Being!

After completing the creation process click on the card of your newly generated Virtual Being. In the top left part of the overview screen, you'll see the Conversation Status component. Click "Start" to launch your virtual being. This process may take up to several minutes. You'll get notified via e-mail after the process is complete.

Now it's time to preview interactions with Virtual Being. Before any deployment, you can use the Virbe platform's built-in preview features. You can choose either **full-screen preview** or **widget preview.** This will open up a new page with Virbe widget opened in the proper mode. After the plugin loads in you should be able to talk with your Virtual Being. If you've followed this tutorial from the beginning your Virtual Being should be connected with your Google Dialogflow project.

If you provide the wrong chatbot endpoint URL or you've skipped any of the steps above your Virtual Being will respond "I couldn't use the defined endpoint, check if it is properly configured or contact the support".&#x20;

#### 6. Unity Deployment

If you would like to use your Virtual Being in a Unity project head out to [Unity Integration page](/touchpoints/unity) in Virbe documentation.

#### 7. Hack time

Now you can focus on your Hackathon project! As long as your Virtual Being is up and running you can test all of your project progress by talking to the Virtual Being. If you would like to learn more about how to embed your character on a website head out to the Deploy Being section. Good luck!

{% content-ref url="/pages/-MaYOLwfLpgrlHEeU6SB" %}
[Web Integration](/touchpoints/web-integration)
{% endcontent-ref %}


