= Purpose= The Bright Pattern Contact Center ''Scenario Builder Reference Guide'' describes the building blocks of the Bright Pattern scenario language and how those blocks are managed in the Scenario Builder application. The function of each scenario block, its parameters, and usage are explained. An example of a typical scenario is provided in the last section of this guide. For information about scenario management in the context of contact center configuration, such as association of scenarios with interaction access points, refer to the Bright Pattern Contact Center ''[[#topic_contact-center-administrator-guide/purpose|Administrator Guide]]''. [[File:Chat-Scenario-Example.png|500px|thumbnail|center|Example of a scenario in the Scenario Builder]] = Audience= The Bright Pattern ''Scenario Builder Reference Guide'' is intended for professionals responsible for the design, development, and testing of interaction processing logic in your contact center. Participants are expected to be familiar with general principles of computer programming and to have a solid understanding of contact center operations and resources that are involved in such operations, including agents and teams, services and skills, schedules, and access points. = Scenario Builder Overview= For every customer interaction that enters your contact center, Bright Pattern Contact Center software has to process that specific interaction to determine what to do with it (e.g., what prompts or announcements to apply, what resources to queue for, what music to play, or when to over-flow to alternate resources). The logic of such automated interaction processing is defined in a ''scenario''. Execution of a scenario with respect to a specific interaction is triggered by a particular event, such as the arrival of a call at a specific access number, or the initiation of a chat session from a specific web page. Scenarios are designed and edited in the Scenario Builder application. This application is launched from the Contact Center Administrator application when you add a new scenario or select an existing one for editing. For more information, see section [[#topic_contact-center-administrator-guide/scenariosoverview|Scenarios Overview]] of the Bright Pattern ''Contact Center Administrator Guide''. [[File:Scenario-guide-image2.png|thumb|800px|center|Scenario Builder]] == Scenario Engine == The Scenario Engine is the component of Bright Pattern Contact Center software that executes your scenarios. Starting from version 5.0, should scenario failover occur (i.e., the Scenario Engine fails while processing a [[#topic_contact-center-administrator-guide/voice|Voice]] scenario), the scenario will be transferred to a backup Scenario Engine; this will restart the scenario from the last executed block and prevent active, connected calls from being disconnected. The following are some examples of what can occur at various stages of scenario failover: * If scenario was on [[contact-center-administrator-guide/Glossary#Interactive_Voice_Response|Interactive Voice Response (IVR)]] stage, the current IVR block will run again. For example, if a scenario is on the [[#topic_scenario-builder-reference-guide/collectdigits|Collect Digits]] block, all entered digits will be lost and the greeting prompt will be played again. If the same scenario has a second call leg (is on the [[#topic_scenario-builder-reference-guide/connectcall|Connect Call]] block), the second leg is immediately disconnected and the Connect Call block again starts to dial to the destination. * If a scenario failover occurs, calls waiting in the queue (i.e., the [[#topic_scenario-builder-reference-guide/findagent|Find Agent]] block) will be immediately queued again by new Scenario Engine using the skill requirements collected by original scenario. * Pending scenario blocks (i.e., ringing, dialing, transfers in progress) may be lost. '''Note''': Real-time statistics are incrementially affected by scenario failovers in some instances. For example, for [[reporting-reference-guide/AllMetrics#Inbound_Calls_Queued_for_the_Day_.28IN_Queued.29|queued calls]], one inbound call will increase statistic value by two (e.g., the first time when it was queued by original Scenario Engine, the second time when it was switched over to new Scenario Engine). == Graphical User Interface == Scenario Builder incorporates a graphical user interface (GUI) with which you can visually connect a sequence of functional blocks, thus building your scenario. These blocks are known as ''scenario blocks''. Scenarios are created using a flowchart format that represents the sequence of interaction processing steps in the scenario. Different scenario blocks perform different functions, such as playing prompts, collecting digits, or looking for available agents. To add a block to the scenario, select it from the list on the left and drag it to the desired location within the scenario. To remove a block from a scenario, select the block within the scenario and drag it back to the list of blocks on the left. == Scenario Blocks == Each block has its own configuration attributes, which appear in the edit pane on the right when the block is added to the flowchart or selected within the flowchart. The attributes specify the function represented by the block. For example, the ''Play Prompt'' block has an attribute that specifies which prompt shall be played when this block is executed in a specific processing step of a specific scenario. The scenario blocks described in this guide may have configuration attributes related to conditional exits, prompts, and/or settings. == Conditional Exits == The scenario typically processes blocks sequentially; however, some blocks have multiple paths that the scenario can take after processing the block. These paths are called conditional exits. Conditional exits enable you to determine how the voice scenario responds to certain conditions that may occur during the processing of an interaction, such as an agent not responding to a call. Each conditional exit appears in the flowchart as green text beneath the block to which it applies. A conditional exit may contain a flow of blocks to handle specific situations. == Prompts == Many blocks use voice prompts to request input from callers, inform callers about events, or play music while callers are waiting for an agent. These prompts can be either prerecorded audio files or static prompts that the system generates using Text-to-Speech (TTS) functionality from textual prompt descriptions. The Prompt Manager dialog box in Scenario Builder lists all prompts the open voice scenario uses, and it lets you set the languages in which the voice scenario can play prompts. == Settings == Settings, also known as configuration attributes, for this block appear in the edit pane on the right when the block is added to the flowchart or selected within the flowchart. These settings specify the function represented by the block. The subsequent sections of this guide describe specific scenario blocks, their attributes, and usage. The blocks are listed in alphabetical order. = Accept= The Accept scenario block accepts the call from the network. This block either starts the ring back tone or allows the system to play ''early media'' (i.e., announcements) before or instead of answering a call. Early media denotes the capability to play media (audio or telephony) before a two-way voice session has been established. For telephony provisioning, establishment of media in the backwards direction may be desirable so that tones and announcements can be played prior to providing answer supervision. Note that call billing typically does not start until the call is answered or until a predefined carrier time is surpassed (in some instances this might be as high as 120 seconds, however, typically closer to 6 seconds). [[File:Accept-Block.png|225px|Scenario Builder Accept scenario block]] '''Important:''' * Using this block in a scenario disables the default behavior of answering a call automatically on scenario start. * Announcement playback enables voice communication only to the caller, not from the caller. An [[#topic_scenario-builder-reference-guide/answer|Answer]] block will be required to establish two-way communication after the call is accepted. * Announcement playback delay duration may be limited or not available at all, depending on the telecom carrier. == Settings == === Provide progress indication (ringback) only === This setting plays a ring back tone to the caller. It is typically considered if the carrier response is fast enough that customers hear no ring back tone. === Establish one-way voice communication === This setting provides the ability to play announcements or prompts to the caller. [[File:Accept-Block-Settings.png|650px|thumbnail|center|Scenario Builder Accept scenario block settings]] = Add to Calling List= The Add to Calling List scenario block adds a calling record to the specified calling list. This block can be used, for example, to automatically redial abandoned or accidentally disconnected calls, or to organize a follow-up campaign based on messages left by customers calling outside of contact center normal hours of operation. [[File:Add-To-Calling-List-Block.png|225px|Scenario Builder Add To Calling List scenario block]] == Conditional Exits == The Add to Calling List block may take the '''Failed''' conditional exit, which indicates that the attempt to add a calling record to the specified list has failed. [[File:Add-To-Calling-List-Failed.png|225px|thumbnail|center|The Failed conditional exit]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === List name === ''List name'' is the name of the list to which the record shall be added. This parameter is mandatory. Note that the name must be added manually since the scenario may be designed before the list itself is created. === Phone number === This is the phone number to be dialed. This parameter is mandatory. The phone number could be the caller ID (ANI) provided for the original call or a number entered by the customer via an IVR application. === Additional data fields === ''Additional data fields'' are additional data that should be added to the given calling list record in the key-value format (e.g., customer’s first and last name). [[File:Add-To-Calling-List-Settings.png|450px|thumbnail|center|Scenario Builder Add To Calling List scenario block settings]] = Answer= The Answer scenario block provides answer supervision to the carrier and answers the call. It opens two-way voice communication with the caller and starts the caller's billing cycle. The Answer block typically follows an [[#topic_scenario-builder-reference-guide/accept|Accept]] block at the beginning of a scenario. [[File:Answer-Block.png|225px|Scenario Builder Answer scenario block]] There are no settings or configuration parameters for this block. '''Important:''' Using the [[#topic_scenario-builder-reference-guide/accept|Accept]] block in a scenario disables the default behavior of answering a call automatically on scenario start and requires an Answer block to provide answer supervision. = Attached Data= The Attached Data scenario block adds or changes custom data associated with interactions processed by the given scenario. The attached data is sent to the Agent Desktop application when interactions are distributed to agents, and the data can be provided to any other integrated applications. For example, this scenario block can be used to populate custom fields in customer relationship management (CRM) activity history records. [[File:Attached-Data-Block.png|225px|Scenario Builder Attached Data scenario block]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === add a data item === This parameter defines a new data element that should be added to the given interaction as a new key-value pair. Or, it specifies a new value for an existing key-value pair. To populate custom fields in CRM activity history records, specify custom field names as data item names with the desired values. [[File:Attached-Data-Block-Settings.png|650px|thumbnail|center|Scenario Builder Attached Data scenario block settings]] = Chat Bot Select Account= [[File:Chat-Bot-Select-Account-Block-53.PNG|225px|Chat Bot Select Account scenario block]] The Chat Bot Select Account block is what turns a regular chat scenario into a bot-enabled chat scenario. This scenario block serves a couple of important functions: * It tells the system that a bot will be used for this scenario * If your system has more than one [[Contact-center-administrator-guide/IntegrationAccounts#BotChatSuggestionsEngine | bot/chat suggestions engine integration account]] configured, it lets you select a specific bot for this scenario It's possible for your contact center to have many bot integrations. Thus, it's important to specify which bot to use. == Settings == [[File:Chat-Bot-Select-Account-Settings-53.PNG|650px|thumbnail|center|Chat Bot Select Account scenario block settings]] === Title text === The name of the scenario block (any). === Account === The bot/chat suggestions engine integration account to be used for this scenario. The drop-down selector shows all such accounts configured for your contact center. If you do not see any listed, you need to [[#topic_tutorials-for-admins/howtoaddbotchatsuggestionsengine| add an integration account]]. = Bright Pattern Create Object = The ''Bright Pattern Create Object'' block inserts a new object into the internal contact database. The allowed object types are Case, Contact, Company, and Activity History. [[File:Bright-Pattern-Create-Object-522.PNG|225px|Bright Pattern Create Object scenario block]] == Conditional Exit == The Bright Pattern Create Object block may take the Failed conditional exit. === Failed === The ''Failed'' conditional exit is executed if the creation operation failed. == Settings == === Title Text === ''Title Text'' is the name of the instance of the block. Enter a name in the text field and the new name of the block will appear in the flowchart. === Object Type === The ''Object Type'' drop-down menu allows you to choose the type of object you want to create in the internal database. You may choose '''Case''', '''Contact''', '''Company''', or '''Activity history'''. Depending on what object type is selected, the settings change as follows: ==== Case Settings ==== ===== Case title ===== This is the text you would like associated with the case title. ===== Category name ===== The ''Category name'' drop-down menu allows you to classify the case as one of the following: '''Incident''', '''Question''', '''Enhancement Request''', '''Defect''', or '''Change Request'''. ===== Custom Case Fields ===== ''Custom Case Fields'' that have been configured in [[#topic_contact-center-administrator-guide/customfields|Case & Contact Management > Custom Fields > Case]] will appear here; you may enter text items in these fields. ===== Return variables ===== The ''Return variables'' settings allow entry of text or variable items in the form of ''Generate case numbers'' or ''Generated case IDs''. ====== Generated case number ====== This is the variable item associated with the case number. ====== Generated case ID ====== This is the variable item associated with the case ID. ==== Contact Settings ==== ===== First name ===== This is the text associated with the first name of the contact. ===== Last name ===== This is the text associated with the last name of the contact. ===== Title ===== This is the text associated with the title of the contact. ===== Position ===== This is the text associated with the position of the contact. ===== Summary ===== This is the text associated with the summary of the contact. ===== Segment ===== This is the text associated with the segment of the contact. ===== Age ===== This is the text associated with the age of the contact. ===== Company ID ===== This is the ID of the company record. ===== Emails ===== When you click the '''add''' option, you may select the type of email from the drop-down menu ('''Primary''', '''Business''', or '''Private'''), then enter the email address. It is possible to add more than one type of email address; the order the emails are listed in is insignificant. Note: Gaps are not allowed (i.e. you must create the email with the index [0] if you want to populate the email with the index [1]). ===== Phones ===== When you click the '''add''' option, you may select the type of phone from the drop-down menu ('''Business''', '''Home''', '''Mobile''', or '''Fax'''), then enter the phone number. It is possible to add more than one type of phone number; the order the numbers are listed in is insignificant. Note: Gaps are not allowed (i.e. you must create phone numbers with the index [0] if you want to populate the email with the index [1]). ===== Custom Contact Fields ===== ''Custom Contact Fields'' that have been configured in [[#topic_contact-center-administrator-guide/customfields|Case & Contact Management > Custom Fields > Contact]] will appear here; you may enter text items in these fields. ===== Return variables ===== The Return variables settings allow entry of text or variable items in the form of Generate record. ====== Generated record ====== This is the variable item associated with the contact record number. ==== Company Settings ==== ===== Company name ===== This is the text associated with the company name. ===== Web URL ===== This is the text associated with the web URL of the company. ===== Revenue ===== This is the text associated with the revenue of the company. ===== Employees ===== This is the text associated with the employees of the company. ===== Custom Company Fields ===== ''Custom Company Fields'' that have been configured in [[#topic_contact-center-administrator-guide/customfields|Case & Contact Management > Custom Fields > Company]] will appear here; you may enter text items in these fields. ===== Return variables ===== The Return variables settings allow entry of text or variable items in the form of Generate record ID. ====== Generated record ID ====== This is the variable item associated with the contact record ID. ==== Activity History Settings ==== ===== Notes ===== This is the text associated with activity history notes; notes are written on behalf of a party. The notes should support HTML links, bullets, and bold, italic, underline, and strikethrough text. ===== Disposition ===== This is the text associated with activity history dispositions; dispositions are written on behalf of a party. ===== Custom1 ===== ''Custom1'' is an additional field for storing custom survey information, such as a question specific to your contact center, in the $(custom1) variable. The allowed range is from -2147483647 to 2147483647. ===== Custom2 ===== ''Custom2'' is an additional field for storing custom survey information, such as a question specific to your contact center, in the $(custom2) variable. The allowed range is from -2147483647 to 2147483647. ===== Custom Activity History Fields ===== ''Custom Activity History Fields'' that have been configured in [[#topic_contact-center-administrator-guide/customfields|Case & Contact Management > Custom Fields > Activity History]] will appear here; you may enter text items in these fields. ===== Return variables ===== The Return variables settings allow entry of text or variable items in the form of Generate record ID. ====== Generated record ID ====== This is the variable item associated with the activity history record ID. = Bright Pattern Delete Object = The ''Bright Pattern Delete Object'' deletes an object from the internal database. The object types allowed for deletion are Case, Contact, and Company. Note the following about the block: * The deletion of cases deletes all activity history related to the case. * The deletion of contacts deletes activity history associated with this contact that is not linked to any cases. * The deletion of contacts erases reference to the contact from cases and activity history items linked to the cases but keeps the cases. * The deletion of contacts erases references to the contact from the calendar but does not remove calendar entries. * The deletion of contact erases references to contact from emails in queue (queue_items.reporter_id), but keeps emails in queue. * The deletion of companies erases reference to it from the contacts but does not delete any contacts. [[File:Bright-Pattern-Delete-Object-522.PNG|225px|Bright Pattern Delete Object scenario block]] == Conditional Exits == === Failed === The ''Failed'' conditional exit is executed if the deletion operation failed, either through timeout or failed network connectivity to an external CRM (e.g. Salesforce). === No Data === The ''No Data'' conditional exit is executed if no data matching the specified deletion criteria is found. == Settings == === Title text === ''Title Text'' is the name of the instance of the block. Enter a name in the text field and the new name of the block will appear in the flowchart. === Object type === The ''Object type'' drop-down menu allows you to choose the type of object you want to delete in the internal database. You may choose '''Case''', '''Contact''', or '''Company'''. === Object ID === This is the database record ID. = Bright Pattern Search Object = The ''Bright Pattern Search Object'' block finds an existing object in the database. Note this block will replace the [[#topic_scenario-builder-reference-guide/retrieveinternalrecord|Retrieve Internal Record]] block starting from version 5.2.2 of Bright Pattern Contact Center software. [[File:Bright-Pattern-Search-Object-522.PNG|225px|Bright Pattern Search Object scenario block]] == Conditional Exits == === Failed === The ''Failed'' conditional exit is executed if the search operation failed, due to invalid parameters, timeout, or network connectivity to external CRM (e.g. Salesforce). === No Data === The ''No data'' conditional exit is executed if no data matching the specified search criteria is found. == Settings == === Title Text === ''Title Text'' is the name of the instance of the block. Enter a name in the text field and the new name of the block will appear in the flowchart. === Object type === The ''Object type'' drop-down menu allows you to choose the type of object you want to search for in the internal database. You may choose '''Case''', '''Contact''', '''Company''', or '''Activity History'''. Depending on what object type is selected, the settings change as follows: ==== Search ==== ''Search'' settings will vary depending on what object type you are searching for. The options are listed as follows: ===== Case ===== To search by case, select either '''ID''', '''Number''', or a '''custom case field''' from the first drop-down menu. Note: Custom case fields will not appear in the ''Search'' menu unless the checkbox '''Searchable''' has been selected. For more information, see [[Contact-center-administrator-guide/CustomFields#Case|Custom Fields]]. For any of these options, you may then select '''Equal''', '''Empty''', or '''Not empty''' from the second drop-down menu. If you select '''Equal''', a field will appear and you will have the option to enter a text or variable item. [[File:Bright-Pattern-Search-Object-Case-Settings-522.PNG|450px|thumb|center|Bright Pattern Search Object case settings]] ===== Company ===== To search by company, select ''' ID''', '''Name''', '''URL''', a '''custom company field''' from the first drop-down menu. Note: Custom company fields will not appear in the ''Search'' menu unless the checkbox '''Searchable''' has been selected. For more information, see [[Contact-center-administrator-guide/CustomFields#Company|Custom Fields]]. For all these options, you may then select '''Equal''', '''Empty''', or '''Not empty''' from the second drop-down menu. If you select '''Equal''', a field will appear and you will have the option to enter a text or variable item. [[File:Bright-Pattern-Search-Object-Company-Settings-522.PNG|450px|thumb|center|Bright Pattern Search Object company settings]] ===== Contact ===== To search by contact, select ''' Email address''', '''External ID''', '''ID''', '''Messenger ID''', '''Phone''', or a '''custom contact field''' from the first drop-down menu. Note: Custom contact fields will not appear in the ''Search'' menu unless the checkbox '''Searchable''' has been selected. For more information, see [[Contact-center-administrator-guide/CustomFields#Contact|Custom Fields]]. For all these options, you may then select '''Equal''', '''Empty''', or '''Not empty''' from the second drop-down menu. If you select '''Equal''', a field will appear and you will have the option to enter a text or variable item. [[File:Bright-Pattern-Search-Object-Contact-Settings-522.PNG|450px|thumb|center|Bright Pattern Search Object contact settings]] ===== Activity history ===== To search by activity history, select '''Case ID''', '''Contact ID''', '''Global Interaction ID''', '''ID''', or a '''custom activity history field''' from the first drop-down menu. Note: Custom activity history fields will not appear in the ''Search'' menu unless the checkbox '''Searchable''' has been selected. For more information, see [[Contact-center-administrator-guide/CustomFields#Activity_History|Custom Fields]]. For all these options, you may then select '''Equal''', '''Empty''', or '''Not empty''' from the second drop-down menu. If you select '''Equal''', a field will appear and you will have the option to enter a text or variable item. [[File:Bright-Pattern-Search-Object-Activity-History-Settings-522.PNG|450px|thumb|center|Bright Pattern Search Object activity history settings]] ==== Return fields ==== Select this option to add return field to your search. When you click the '''add''' option, you may enter a text or variable item in the field. Note you may add multiple return fields. ==== Recordset name ==== ''Recordset name'' is the field that holds the results of the search the block executed; the text (i.e., value) entered in this field can then be used in a number of subsequent blocks to dictate further actions (e.g., passing the value to a [[#topic_scenario-builder-reference-guide/brightpatterncreateobject|Bright Pattern Create Object]] block if a contact's name is not found). = Bright Pattern Update Object = The ''Bright Pattern Update Object'' block updates an existing object in the database. The allowed object types are Case, Contact, and Company. Note this block is available from Bright Pattern Contact Center software version 5.2.2. [[File:Bright-Pattern-Update-Object-522.PNG|225px|Bright Pattern Update Object scenario block]] == Conditional Exits == === Failed === The ''Failed'' conditional exit is executed if the update operation failed, due to invalid parameters, timeout, or network connectivity to external CRM (e.g. Salesforce). === No Data === The ''No Data'' conditional exit is executed if no data matching the specified update criteria is found. == Settings == === Title text === ''Title Text'' is the name of the instance of the block. Enter a name in the text field and the new name of the block will appear in the flowchart. === Object type === The ''Object type'' drop-down menu allows you to choose the type of object you want to update in the internal database. You may choose '''Case''', '''Contact''', or '''Company'''. Depending on what object type is selected, the settings change as follows: ==== Case Settings ==== ===== Record ID ===== This is the database record case ID. ===== Case title ===== This is the text associated with the case title. ===== Category name ===== The ''Category'' name drop-down menu allows you to classify the case as one of the following: Incident, Question, Enhancement Request, Defect, or Change Request. ===== Custom Case Fields ===== ''Custom Case Fields'' that have been configured in [[#topic_contact-center-administrator-guide/customfields|Case & Contact Management > Custom Fields > Case]] will appear here; you may enter text items in these fields. ==== Contact Settings ==== ===== Record ID ===== This is the database record contact ID. ===== First name ===== This is the text associated with the first name of the contact. ===== Last name ===== This is the text associated with the last name of the contact. ===== Title ===== This is the text associated with the title of the contact. ===== Position ===== This is the text associated with the position of the contact. ===== Summary ===== This is the text associated with the summary of the contact. ===== Segment ===== This is the text associated with the segment of the contact. ===== Age ===== This is the text associated with the age of the contact. ===== Company ID ===== This is the ID of the company record. ===== Emails ===== When you click the '''add''' option, you may select the type of email from the drop-down menu ('''Primary''', '''Business''', or '''Private'''), then enter the email address. It is possible to add more than one type of email address; the order the emails are listed in is insignificant. Note: Gaps are not allowed (i.e. you must create the email with the index [0] if you want to populate the email with the index [1]). ===== Phones ===== When you click the '''add''' option, you may select the type of phone from the drop-down menu ('''Business''', '''Home''', '''Mobile''', or '''Fax'''), then enter the phone number. It is possible to add more than one type of phone number; the order the numbers are listed in is insignificant. Note: Gaps are not allowed (i.e. you must create phone numbers with the index [0] if you want to populate the email with the index [1]). Note the following for existing phone numbers: * Existing phones in the contact are searched by phone number. * If an existing phone is found, its type is updated. * If an existing phone is not found, it is added to the list of phones in the contact list. * There is no way to delete a phone number (or change a phone number) via the ''Bright Pattern Update Object'' block and must be done via Agent Desktop; deleting phone numbers is deemed too complex for this iteration of scenario block design. ===== Custom Contact Fields ===== ''Custom Contact Fields'' that have been configured in [[#topic_contact-center-administrator-guide/customfields|Case & Contact Management > Custom Fields > Contact]] will appear here; you may enter text items in these fields. ==== Company Settings ==== ===== Record ID ===== This is the database record company ID. ===== Company name ===== This is the text associated with the company name. ===== Web URL ===== This is the text associated with the web URL of the company. ===== Revenue ===== This is the text associated with the revenue of the company. ===== Employees ===== This is the text associated with the employees of the company. ===== Custom Company Fields ===== ''Custom Company Fields'' that have been configured in [[#topic_contact-center-administrator-guide/customfields|Case & Contact Management > Custom Fields > Company]] will appear here; you may enter text items in these fields. = Collect Digits= The Collect Digits scenario block prompts the caller to input a string of digits using the phone keypad, and it collects the digits. [[File:Collect-Digits.png|225px|Scenario Builder Collect Digits scenario block]] Specifically, the block initiates the following actions: # The block plays a prompt requesting digit input and waits for input. # If the user does not start the input (does not enter the first DTMF digit) before the ''Timeout Before First Digit'' expires, the block plays a short version of the main prompt (e.g., ''We did not receive a valid entry, please try again…'') and awaits input again. This is repeated up to the number of attempts configured in the ''Retries'' field. If the specified ''Retries'' count is exceeded, the block exits via the conditional exit '''No Input'''. # The caller enters the digits using the phone keypad. # The input is complete when the caller either enters the specified ''Max Number of Digits'', or enters the '''Finish Input button''' (usually #), or interrupts the input for the specified ''Timeout Between Digits''. # The input can be started over by entering the specified ''Clear Input'' digit (usually *), if necessary. # Upon completion, the block saves the entered digits as a scenario variable with the specified name. == Conditional Exits == The Collect Digits block may take one of two conditional exits: No Input or Aborted. === No Input === The block did not receive any input from the caller after repeating the ''Short version of main prompt'' for the number of times set in the ''Retries'' field. === Aborted === The caller aborted input by pressing the ''Abort input digit''. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Prompt to play (main prompt) === This is the initial prompt that instructs the caller to input data. This main prompt is required. === Max number of digits to expect === This is the maximum number of digits to expect. Leave this field empty if the number of digits may vary. === Finish input button === This button is the digit that the caller enters to indicate the input is complete. Most voice scenarios use the pound sign (#) as this indicator. If you specify a finish input button, notify the customer about it during the ''Main Prompt''. If the expected input has a fixed length, set this parameter to ''None'' and specify ''Max number of digits to expect''. If this parameter is set to ''None'', the scenario will use the ''Max number of digits to expect'' and ''Timeout Between Digits'' to determine when the caller completes the input. === Name of the variable to store the result === This is the name for the scenario variable in which the entered digits will be stored. === Retries === ''Retries'' is the number of times this block attempts to execute before the scenario moves to the next building block. Enter "1", or leave this field blank if you only want the block to attempt to execute one time. === Short version of main prompt to play after timeout === This prompt is the one that will be played when the ''Timeout Before First Digit is Dialed'' expires. It is optional; by default, ''Prompt to play'' will play. === Clear input digit === This is the key that the caller presses to reset input to empty string. It is useful when callers must enter long numbers. If you specify a Clear Input Digit, tell the customer about it during the ''Main Prompt'' (e.g., ''If you make a mistake, press the star key''). === Abort input digit === This is the digit that the caller enters to clear all previously entered digits and abort the input. If you specify an abort input digit, tell the customer about it during the ''Main Prompt''. If the caller presses the abort digit, the block will not perform validation (even if it is specified) and will immediately exit. === Timeout Before First Digit is Dialed === ''Timeout'' is the number of seconds that the scenario waits for the caller to start entering input before playing the ''Short version of main prompt''. === Timeout Between Digits === This is the number of seconds that the scenario will wait for the next digit before input is considered completed. [[File:Collect-Digits-Settings.png|550px|thumbnail|center|Scenario Builder Collect Digits scenario block settings]]
[[#topic_scenario-builder-reference-guide/attacheddata|< Previous]] | [[#topic_scenario-builder-reference-guide/comment|Next >]]
= Comment= The Comment scenario block allows you to enter internal comments related to this scenario. Comments have no effect on run-time operations. [[File:Comment-Scenario-Block.png|225px|Scenario Builder Comment scenario block]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Comment === ''Comment'' is the field where you enter free-form text comments. [[File:Comment-Block-Settings.png|350px|thumbnail|center|Scenario Builder Comment scenario block settings]]
[[#topic_scenario-builder-reference-guide/collectdigits|< Previous]] | [[#topic_scenario-builder-reference-guide/connectcall|Next >]]
= Connect Call= [[File:Connect-Call-Block.png|225px|Scenario Builder Connect Call scenario block]] The Connect Call scenario block connects a call to the destination specified in the ''$(destination)'' variable (typically, the extension of the agent found by the preceding [[#topic_scenario-builder-reference-guide/findagent|Find Agent]] block). If the destination extension has an agent logged in, the system tracks the agent’s state according to the state of the call. The block handles call transfers and conferences internally and only ends when the remote party disconnects or the last agent on the call disconnects. If a [[#topic_scenario-builder-reference-guide/findagent|Find Agent]] block was executed prior to a Connect Call block, then the queue treatment started by that Find Agent block continues until the specified destination answers the call. If a ''Service Announcement'' prompt (whisper) is specified for a Connect Call block, the ring back tone or music on hold is played to the caller while the service announcement is played to destination party. The caller will not hear the announcement. For external destinations, Caller IDs are set according to the configuration of the corresponding [[#topic_contact-center-administrator-guide/dial-outentries|dial-out entries]]. == Settings == [[File:Connect-Call-Block-54.PNG|750px|thumbnail|center|Scenario Builder Connect Call scenario block settings]] === Title text === The name of the instance of the block. === Default Destination === The default phone number to which the call connects if variable ''$(destination)'' is empty. Note that if the destination is an IVR, the phone number can include pauses and digits required to get to the desired contact or self-service option. Comma symbols are used for pauses; each comma will delay dialing of the next digit by one second (e.g., 18005552222,,,5,,245). For more information, see the ''Agent Guide'', section [[#topic_agent-guide/tutorials/calls/howtospeeddialthroughexternalivrs|How to Speed-Dial Through External IVRs]]. === Override Destination === The phone number to which the call connects. If this field has a value, the scenario ignores the destination variable. Use this field only if you want to override the destination variable. Note that if the destination is an IVR, the phone number can include pauses and digits required to get to the desired contact or self-service option. Comma symbols are used for pauses; each comma will delay dialing of the next digit by one second (e.g., 18005552222,,,5,,245). For more information, see the ''Agent Guide'', section [[#topic_agent-guide/tutorials/calls/howtospeeddialthroughexternalivrs|How to Speed-Dial Through External IVRs]]. === Mark all calls connected by this block as overflow calls === If this checkbox is selected, all calls connected via this block will be marked for reporting purposes as calls made to overflow destinations. === Override calling party name with === This setting enables you to override the configured Caller ID name in the outbound call. === No Answer Timeout === The number of seconds that the scenario waits for a destination to answer the call before executing the ''No Answer'' conditional exit. The default is 10 seconds. === Auto-answer call in === The number of seconds that the scenario waits before the call is auto-answered. If you do not use auto-answer, leave this field empty. This function will work for agents who use softphones. Support for this function in hardphones depends on a particular hardphone model. === Escape button for customer to hang up the agent === The button that the caller can press to stop a conversation with this agent. Unlike when it is released, the scenario will continue and can further process the call. === Custom hold music === The prompt that the scenario plays when the caller is on hold. The prompt is always played from the beginning. The prompt is optional; if present, it will override the [[#topic_contact-center-administrator-guide/audiotreatments|default Hold and queue music treatment]] set at the contact center level. === Service announcement === The optional prompt the scenario plays to inform the agent to which service an incoming call pertains or to play a beep as notification. === number of plays === The number of times that the ''Service Announcement'' prompt, if used, will be played to the agent. === stop announcement button === The button that the agent can use to interrupt playback of the service announcement prompt. === Custom ringback === The prompt that will be played back to the caller instead of a standard ring-back tone. If the ''Keep playing hold music while ringing on agent'' option is selected in the preceding [[#topic_scenario-builder-reference-guide/findagent|Find Agent]] block, the ''Custom ringback'' prompt will not be played even if specified. Instead, the queue music will be played up to the moment of answer. === Repeated answer-side prompt === This prompt is used for transfers of service calls to other call centers to announce the call information when the transferred call is answered by the remote agent (e.g., ''This a call is from [name], please press [confirm answer button] to connect''). When the remote agent presses the confirm answer button, a call with the original calling party is established. === Confirm answer button === What the agents of remote contact centers will press to pick up service calls forwarded to them from your contact center after hearing the ''Repeated answer-side'' prompt. === Drop connection if no answer in === The number of minutes that the scenario will wait for the remote contact center to pick up the call before executing the ''No Answer'' conditional exit for this call. It starts from the moment that the remote agent answers. == Conditional Exits == The Connect Call block may take one of the following conditional exits: No Answer, Busy, Target Disconnected, or Transfer Failed. === No Answer === The destination phone rings but no one answers within the ''No Answer Timeout''. This also includes other types of call failures (except for ''Busy''). === Busy === The destination phone is busy (SIP 486) or the call is rejected by an agent. === Target Disconnected === The call was answered by the target side and eventually normally terminated from target side. The current interaction step is completed and a new interaction step is created. This could be used for surveys when the agent hangs up first and survey flow starts from this conditional exit. === Transfer Failed === This is a failure branch for failed agent transfers. = Connect Chat = The Connect Chat scenario block connects a chat to the destination specified in the ''$(destination)'' [[#topic_scenario-builder-reference-guide/variables|variable]] (typically, the agent found by the preceding [[#topic_scenario-builder-reference-guide/findagent|Find Agent]] block or to the specified chat scenario entry). If the agent is logged in, the system tracks the agent’s state according to the state of the interaction. The block handles the call transfers and conferences internally and only ends when the remote party disconnects or the last agent disconnects. [[File:Connect-Chat-Block.png|225px|Connect Chat scenario block]] == Conditional Exits == The Connect Chat block may take one of the following conditional exits: No Answer or Target Disconnected. === No Answer === The chat request is submitted to the agent, but the agent does not answer within the ''No Answer Timeout''. === Target Disconnected === The chat request is answered by the agent and eventually, the call is terminated from the agent side. ''Target Disconnected'' could be used as a conditional exit, for example, for customer surveys when an agent disconnects first and a customer survey flow starts from this conditional exit. In the event of agent connection loss during a chat with a customer, a [[#topic_scenario-builder-reference-guide/variables|variable]], ''$(targetDisconnectedCause)'', also supplies the agent disconnect reason. This variable informs the chat scenario of which side has disconnected and gives an option to continue the conversation using the chat scenario or another agent. Values (string) for the variable include the following: ''UserHangup'', ''SystemHangup'', ''UserLogout'', and ''Failure''. In the image shown, a [[#topic_scenario-builder-reference-guide/setvariable|Set Variable]] block has been added to the chat scenario, and its name has been set to "Target Disconnected." It appears in the scenario with the following properties. [[File:Target-Disconnected-in-Scenario.png|450px|center|Set Variable block added to scenario]] The [[#topic_scenario-builder-reference-guide/if|If]] and [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] blocks beneath the ''Target Disconnected'' variable provide additional uses for the variable. If the user hangs up, the Target Disconnected variable provides the reason (i.e., the cause) for the disconnected chat and provides an avenue to continue the conversation. [[File:If-User-Hangs-Up.png|700px|center|If User Hangs Up > Target Disconnected Cause]] An internal message is sent to a specific agent or representative (if a user name is entered), and the variable is given in the message. This tells the agent that the chat has been disconnected, and why. This message is not visible to customers. [[File:Internal-Message-Target-Disconnected.png|700px|center|Internal Message > Target Disconnected Cause]] In the following example scenario, the Target Disconnected variable is used with an ''If'' block to discover why the chat was disconnected. The title of the If block is ''Check reason'', the exit label is ''Network Failure'', and the variable is ''"targetDisconnectedCause" = "userLogout"''. In this instance, the variable equals the string "userLogout" in order to inform the scenario that if the chat disconnected due to a network failure, the cause must be that the user logged out. [[File:If-Check-Reason.png|800px|center|Target Disconnected variable being used with an If block]] The next branch in the scenario is ''Network Failure'' followed by ''Send Message''. This sends an automated message to the customer to inform the customer that the chat was disconnected and will resume when another agent is available. The scenario then proceeds with ''Goto "Find Agent (Chat)"'' to find the next available agent to handle the chat. [[File:Network-Failure-Send-Message.png|800px|center|A message tells the customer that the chat was disconnected]] == Settings == Settings, also known as configuration attributes, for this block appear in the ''Edit'' pane on the right when the block is added to the flowchart or selected within the flowchart. These settings specify the function represented by the block, and they are described as follows. === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Default Destination === ''Default Destination'' is the default chat scenario entry to which the chat will be connected if no agents were found by the preceding [[#topic_scenario-builder-reference-guide/findagent|Find Agent]] block to serve this interaction. === Override Destination === ''Override Destination'' is the chat scenario entry to which the chat will be connected is this parameter, as specified. If this field has a value, the scenario ignores the agent found by the preceding Find Agent block. === Mark all interactions connected by this block as overflow === If selected, all chats connected via this block will be marked for reporting purposes as chats made to overflow destinations. === No Answer Timeout === ''No Answer Timeout'' is the number of seconds the scenario waits for a destination to answer the call before executing the ''No Answer'' conditional exit. The default is 10 seconds. === Auto-answer in === This represents the number of seconds that the scenario waits before the chat request is auto-answered. If you do not use auto-answer, leave this field empty. === HTML code === ''HTML code'' defines the page that will be presented to the customer when agent accepts the chat request. [[File:Connect-Chat-Properties.png|800px|center|Setting the properties for the Connect Chat block]]
[[#topic_scenario-builder-reference-guide/connectcall|< Previous]] | [[#topic_scenario-builder-reference-guide/dbexecute|Next >]]
= DB Execute= The DB Execute scenario block provides a way for a scenario to execute SQL statements on a specified database. This block can be used to share data between scenarios. [[File:DB-Execute-Block.png|225px|Scenario Builder DB Execute scenario block]] == Conditional Exits == The DB Execute block may take one of the following conditional exits: Failed or No Data. === Failed === An error occurred during SQL statement execution. No error details are provided. === No Data === The SELECT statement successfully executed but did not return any records. [[File:DB-Execute-Block-Conditional-Exits.png|300px|thumbnail|center|DB Execute Block conditional exits]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === DB Connection === ''DB connection'' represents the desired database connection. See the other settings for details. === Name === This is the name of the database connection. This name is shown in the DB Execute block connection selection menu. If no options are shown, click '''Manage DB connections''' to add new DB connections. === JDBC driver and connection string === Specify the JDBC driver and connection string that will be used to access this database. Note that templates are provided for some widely used DBMS systems. === Database user name and password === Specify database access credentials. The database connection selector allows the following operations: * Add a new connection ('''Add New''' button). * Edit and save the selected connection ('''Save''' button). * Delete the selected connection ('''Delete''' button). * Select the connection to be used in the DB Execute block ('''Select''' button). * Clear the connection selected for the DB Execute block ('''Select None''' button). * Close the window without changing the DB Execute block connection ('''Close''' button). === SQL Statement === This is the SQL statement to be executed. SQL statements may use scenario variables. For example: ''SELECT id, name FROM customers WHERE phone=’$(item.from)’'' === Recordset name === For SELECT statements, the name of the retrieved recordset should be specified. This allows scenarios to have more than one recordset and to choose the recordset to iterate on.
* The columns of the first retrieved record (if any) are stored in the scenario variables ''<recordset_name>.<column_name>'' (e.g., ''RS.id''). * The number of returned records is stored in variable ''<recordset_name>.__count__'' (e.g., ''RS.__count__''). Note the double underscores in front and after count; they are used to reduce the chance of confusing the name of this variable with a column name in a recordset. * To iterate through the recordset, use the ''Get Next Record'' block. * The number of records in the retrieved recordset is limited to 25.
The database connection is selected from a list of connections. Click the '''Manage DB connections''' button. The pop-up window will display all database connections defined in this scenario. For each connection, the following data should be defined: [[File:DB-Execute-Block-Settings.png|650px|thumbnail|center|Scenario Builder DB Execute scenario block settings]]
[[#topic_scenario-builder-reference-guide/connectchat|< Previous]] | [[#topic_scenario-builder-reference-guide/email|Next >]]
= EMail= The Email scenario block sends an email, with an attachment if so configured. It can be used together with the [[#topic_scenario-builder-reference-guide/record|Record]] block to send recorded voice messages. For SMTP server configuration, see section [[contact-center-administrator-guide/EmailSettings#SMTP_Configuration|Email Settings]] of the ''Contact Center Administrator Guide''. [[File:EMail-Scenario-Block.png|225px|Scenario Builder EMail scenario block]] == Conditional Exits == The EMail block may take the ''Mail not sent'' conditional exit, in which the message cannot be sent (if, for example, the SMTP server is down). == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === From / Display name === This is the display name of the email sender. A scenario variable can be specified as the value using the ''$(varname)'' format. === From / Address === This is the email address of the email sender. A scenario variable can be specified as the value using the ''$(varname)'' format. === To / Address(es) === This specifies the email addresses of the intended recipients. If sending to multiple email addresses, separate email addresses using a comma or a semicolon. Scenario variables can be specified as values using the ''$(varname)'' format. === Message / Subject === This is the subject line of the email. Can contain scenario variables in the ''$(varname)'' format. === Message / Format === Specify the format for email: HTML (default) or .TXT (plain text). === Message / Body === This is the text to be sent as a message body. It can contain scenario variables in the ''$(varname)'' format. Bright Pattern does not impose any limits on the size of the email. === URL of the recording to attach === URL of the recording to attach is the full HTTP URL of the voice recording previously done by a [[#topic_scenario-builder-reference-guide/record|Record]] scenario block. A scenario variable can be specified as the value using the ''$(varname)'' format. Typically, the Record block will store the resulting URL in a scenario variable; this variable will be used by the EMail scenario block. (Before Bright Pattern Contact Center version 3.7.7, a combination of the Record and Email scenario blocks were used to implement recording and distribution of voicemail messages. Starting from version 3.7.7, a new scenario block, called [[#topic_scenario-builder-reference-guide/voicemail|Voicemail]], was introduced to combine the aforementioned functions and support various storage and playback options specific to voicemail.) [[File:EMail-Scenario-Block-Settings.png|650px|thumbnail|center|Scenario Builder EMail scenario block settings]]
[[#topic_scenario-builder-reference-guide/dbexecute|< Previous]] | [[#topic_scenario-builder-reference-guide/exceptionhandler|Next >]]
= Exception Handler= The Exception Handler scenario block provides an alternative branch the scenario can execute if an exception, a block error, or a disconnection occurs. This allows the scenario to continue executing instead of terminating as it normally would under such circumstances without the Exception Handler block. Use this block in any part of a scenario in which you expect exceptions, block errors, or caller disconnects in order to ensure continued processing. [[File:Exception-Handler-Scenario-Block.png|225px|Scenario Builder Exception Handler scenario block]] == Conditional Exits == The Exception Handler block may take one of the following conditional exits: Try or Catch. === Try === In the Try conditional exit, enter the sequence of blocks that you predict might generate an exception, block error, or disconnect. === Catch === In the Catch conditional exit, enter the sequence of blocks that you want the scenario to execute if an exception, block error, or disconnect occurs during the Try conditional exit. [[File:Exception-Handler-Try-Catch.png|300px|thumbnail|center|Scenario Builder Exception Handler Try/Catch conditional exits]] The Exception Handler block initially executes the Try conditional exit. * If an exception, block error, or caller disconnect occurs while executing any block in the Try conditional exit, the scenario executes the Catch conditional exit. After executing the Catch conditional exit, the scenario executes the next block in the flowchart. * If no exception, block error, or disconnect occurs, the scenario does not execute the Catch conditional exit. Instead, the scenario processes the next block in the flowchart. == Settings == '''Title text''' ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. [[File:Exception-Handler-Scenario-Block-Settings.png|650px|thumbnail|center|Scenario Builder Exception Handler scenario block settings]]
[[#topic_scenario-builder-reference-guide/email|< Previous]] | [[#topic_scenario-builder-reference-guide/exit|Next >]]
= Exit= The Exit scenario block disconnects the currently active interaction and exits the scenario. [[File:Exit-Scenario-Block.png|225px|Scenario Builder Exit scenario block]] The following example scenario shows Exit blocks in a web chat scenario. [[File:Exit-Block-Scenario-Example.png|650px|thumbnail|center|Scenario Builder Exit block used in a web chat scenario]]
[[#topic_scenario-builder-reference-guide/exceptionhandler|< Previous]] | [[#topic_scenario-builder-reference-guide/fetchurl|Next >]]
= Fetch URL= The Fetch URL scenario block fetches web content, including JSON-formatted data, from a specified URL, using a specified method and parses it into scenario variables. Both HTTP and HTTPS protocols are supported, as well as basic authentication. [[File:Fetch-URL-Scenario-Block.png|225px|Fetch URL scenario block]] == Conditional Exits == The Fetch URL block may take one of two conditional exits: Failed or No Data. * The ''Failed'' conditional exit is taken if an error occurred during the HTTP method execution. See [[#HTTP_Response_Codes|HTTP Response Codes]] below for details. * The ''No Data'' conditional exit is executed if no data is returned in the body of the HTTP response. == Settings == === Title text === ''Title text'' is the name of the instance of the block, displayed in the flowchart. === Request type === ''Request type'' is the type of method to be used to fetch web content from the specified URL. Request types are defined in the pull-down menu. Select from the following request types, or write in another method manually: * GET (default) * POST * HEAD * PUT * DELETE * CONNECT * OPTIONS * TRACE === URL to fetch === ''URL to fetch'' is the HTTP/HTTPS URL of the web content to get. Query string parameters are specified separately. === Extra headers === ''Extra headers'' are the HTTP headers to add to the request (e.g. for authentication purposes). Functions can be used by inserting them as a value. Click '''add''' to define a header, type in the ''name'', and type in the ''value''. For example, a payment gateway may have a RESTful interface that requires authentication via “Authorization” header and SHA-256 hash of time, username, and password. To enable authentication, you would provide a request header with the ''name'' “Authorization” and the ''value'' ''“accessid==hmac(“SHA-256”, key, message)”''. Functions are described in the ''Scenario Builder Reference Guide'', section [[3.15:scenario-builder-reference-guide/Built-inFunctions|Built-in Functions]]. === URL parameters === These are the URL parameters to be URL encoded and appended into URL. Scenario variables can be used by inserting them as ''$(varname)''. Click '''add''' to define URL parameters, type in the name, and type in the value. === Content Type === ''Content type'' is the type of data to be submitted in request body. The setting is displayed only if request type POST is selected. Select ''application/json'' for a JSON data structure, or select ''application/x-www-form-urlencoded'' for a URI-encoded data in the body of the message. === Body === ''Body'' is the data to be submitted in the request body. The setting is displayed only if request type POST is selected. Body is the data to be submitted. The format of the data must correspond to the ''Content Type'' above. Scenario variable substitutions are allowed. === Username === ''Username'' is the request authentication username. Variable substitutions are allowed. === Password === ''Password'' is the request authentication password. Variable substitutions are allowed. === Initial path in the result JSON === If the response body contains JSON, this setting can be used to save into scenario variables a specific part of the data. Example: ''myobject.node.list[4]''. The default is "none"; the path starts from the root of the returned JSON. === Scenario variable prefix for JSON data === This string will be used as the name of the variable to receive parsed JSON data. Note that if the initial path above points to an array, depending on the value of the ''GetNext'' option below, this variable would either contain the array or its first (and subsequent) elements. === Use GetNext block to loop through data === This box is selected if the JSON response data (at the initial path) is an array. The scenario variable will be set to the first element of the array and GetNext block could be used to iterate over the array elements, setting scenario variable to the next element. '''Note''': If you enable this option, the behavior of the Fetch URL block will be the same as it was for Bright Pattern Contact Center version 3.13 and earlier. [[File:Fetch-URL-315.png|650px|thumbnail|center|Fetch URL scenario block settings]] == Response Data Handling == In all cases, the response data is limited to 50 KB. If the response data is not JSON-encoded, it could be accessed as string via the ''$(integrationResultBody)'' scenario variable described below. If the response data is JSON, the following will happen: # It will be parsed. # If the "GetNext" option is enabled and the item the initial path is pointing to is a regular, non-associative array: ## The scenario variable will be set to the first item of the array. ## The GetNext block could be used to initialize the variable to the next and subsequent items. # Otherwise, the scenario variable will be set to the item to which the initial path is pointing. Possible syntax for the initial path setting and the access to the data saved in the scenario variable is as follows: * ''item.subitem'' * ''item[index]'' * ''item[attr1=value].attr2'' * combinations (e.g., ''item.subitem.array[index].value.array[attr=x].value'') == HTTP Response Codes == The status code and the body of the received HTTP response will be stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'', respectively. For troubleshooting purposes, you may use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed attempt. For more information, see the description of variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']]. For backward compatibility reasons, the code and the body of the received HTTP response are also stored in local variables ''$(fetchURLResultCode)'' and ''$(fetchURLResultBody)''. The possible values of the ''$(fetchURLResultCode)'' variable are as follows: * '''0:''' 200 OK response (i.e., a successful HTTP request response) * '''-1:''' 200 OK response, but unable to parse the body into recordset * '''-2:''' 200 OK response, but body length exceeds 50 KB * '''-3:''' Unable to connect to HTTP server or other connection errors * '''Other:''' Actual non-200 response code === HTTP Redirect Response Handling === The Fetch URL block handles 3xx Hypertext Transfer Protocol (HTTP) response codes in the following way. When the following codes are received, the block retries the request to the provided redirect URL using the ''GET'' request method: * 301 Moved Permanently * 302 Found * 303 See Other (since HTTP/1.1) When the following codes are received, the block retries the request to the provided redirect URL using the originally specified request method: * 307 Temporary Redirect (since HTTP/1.1) * 308 Permanent Redirect (RFC 7538) When the following status codes are received, the conditional exit ''Failed'' will be selected: * 300 Multiple Choices * 304 Not Modified (RFC 7232) * 305 Use Proxy (since HTTP/1.1) * 306 Switch Proxy
[[#topic_scenario-builder-reference-guide/exit|< Previous]] | [[#topic_scenario-builder-reference-guide/findagent|Next >]]
= Find Agent = In the Scenario Builder application, the Find Agent scenario block finds an agent qualified to handle a given interaction. When the agent becomes available, the block creates a variable called ''$(destination)'' and sets it to the agent’s phone number (for voice) or username (for chat). Note that [[#topic_contact-center-administrator-guide/omni-channelrouting|Omni-Channel Routing]] settings may determine the frequency with which certain interaction types are routed to your agents. [[File:Find-Agent-Scenario-Block.png|225px|Find Agent scenario block]] '''Important:''' The [[#topic_scenario-builder-reference-guide/connectcall|Connect Call]] or [[#topic_scenario-builder-reference-guide/connectchat|Connect Chat]] block should be used immediately after the Find Agent block to connect the interaction to the identified agent. For example, the scenario should proceed in the following way: # The scenario collects data from a caller. # Based on the collected data, the scenario determines the qualifications necessary to handle the call. # The scenario uses the Find Agent block to find an agent with the necessary qualifications (e.g., Peter at extension 151). # That agent’s extension is stored internally in the ''$(destination)'' variable. In this example, the variable is set to ''151''. # The scenario uses the Connect Call block to distribute the call to the number stored in the ''$(destination)'' variable. Note that the block properties will be different depending on whether it is used in a voice or a chat scenario. == Settings == [[File:Find-Agent-Chat-316.png|800px|thumbnail|center|Find Agent (Chat) settings]] === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Agent skills required === You can select the ''agent skills required'' for handling the interaction. ====Wait condition==== The agent selection rule is expressed as a sequence of escalation intervals with different agent selection criteria defined for each. The term "escalation" implies that each subsequent interval will normally have less stringent selection criteria, thus increasing the probability of finding an agent available to attend to the waiting interaction. If there are multiple conditions specified in the escalation interval, ALL conditions must match for an agent to be considered. A set of conditions in each interval is independent from conditions in other intervals. ====add Interval==== Any number of escalation intervals can be defined within the expression. The last interval can be finite or infinite (leave the end time empty to use an infinite interval). To specify an interval, first define its length. Then click '''add''' to define your agent selection condition for this interval, which are as follows. * '''Skill from skill group''' – This condition matches the interaction to qualified agents according to skill requirements specified in the preceding [[#topic_scenario-builder-reference-guide/requestskillorservice|Request Skill or Service]] blocks. This is the condition that is normally used for skill-based routing. You can define multiple skill groups within the same interval. A minimum acceptable skill level must be assigned to each skill group. * '''Specific skill''' – This condition matches the interaction to qualified agents according to an explicitly specified skill. This option can be used instead of the option ''Skill from skill group'' in simple scenarios without IVR-based service/skill selection. You can define multiple skills within the same interval. A minimum acceptable skill level must be assigned to each skill group. * '''Specific skill from variable''' – This condition matches the interaction to the skill in the specified variable. It can be used as a logical extension of the ''Specific agent'' option. If a specific agent does not become available within the first interval, the interaction can then be routed to a group of agents who share a particular property with that specific agent (e.g., work in the same office). Such a property can be represented by an [[#topic_contact-center-administrator-guide/auxiliaryskills|auxiliary skill]]. You can obtain this skill and store it in the specified variable using the property '''Skill name''' of the [[#topic_scenario-builder-reference-guide/getuserconfiguration|Get User Configuration]] block. This option will ignore any skills requested by the interaction and any agents’ skills except the one identified by this variable. * '''Specific agent''' – This condition matches the interaction to the specified agent (e.g., the agent who handled the previous interaction with the same customer). The variable’s value must be the agent’s global identifier in the system configuration (see property '''User ID''' of the [[#topic_scenario-builder-reference-guide/getuserconfiguration|Get User Configuration]] block). This option is available for the first interval only. If the specified agent is logged out, the next interval will be tried immediately. This option will ignore any of the skills requested by the interaction and any skills possessed by the specified agent. === Overflow call handling starts at === This setting defines at which escalation interval the identified agent will be considered an overflow destination, unless his skills/levels match the skill/level requirements of the preceding escalation intervals. === HTML code === ''HTML code'' defines the HTML page that the customer will use during the chat session. This setting applies to chat scenarios only. ===Initial Message=== For chat scenarios only (see image below), the ''initial message'' (i.e., first periodic message) is sent in 5 seconds after the interaction enters the queue, and subsequent periodic messages are sent according to the configured timeout, until the interaction leaves the queue. ===Periodic Message=== For chat scenarios only (see image below), the ''periodic message'' is used to send a periodic regular text message in the same way that the [[#topic_scenario-builder-reference-guide/sendmessage|Send Message]] block does. For example, the periodic message could include [[#topic_scenario-builder-reference-guide/variables|variables]] that provide the customer information about EWT or placement in queue. === Escape button === The ''Escape button'' is the key on the telephone keypad (0-9, *, or #) that a caller can press to exit the queue. When the caller presses the escape button, the scenario executes the Escape Digit conditional exit. Typically in such situations, the scenario sends the caller to a voicemail or terminates the call. This setting applies to voice scenarios only. === Keep call in queue === If selected, the scenario will keep the call in queue even if there are no agents currently logged on. If not selected, the No Agents conditional exit will be used. This setting applies to voice scenarios only and finite intervals only. It does not apply to the condition Specific agent. === Virtual Queue option === The ''Virtual Queue option'' allows the callers to request a callback instead of waiting for an agent in the queue. Calls that requested callbacks will be waiting in a virtual queue. The decision to offer the callback option is made based on the call’s estimated wait time (EWT) in queue. If a caller selects this option, the Callback exit is taken. This exit would normally lead to a [[#topic_scenario-builder-reference-guide/requestcallback|Request Callback]] block where the caller’s original inbound call will be disconnected while his position in the service queue will be preserved. The callback is made when it is the caller’s “turn” to be routed to an agent. Note that the callback option must also be enabled in the [[#topic_contact-center-administrator-guide/propertiestab|general properties of the corresponding service]]. To enable the ''Virtual Queue option'', select the '''enable if EWT is greater than''' checkbox and specify the threshold EWT; the Virtual Queue option will be offered only if the Estimated Waiting Time for a given call exceeds this threshold value. Specify the Callback button (i.e., the phone key that the caller will have to press to select the Virtual Queue option) to request a callback instead of waiting in the queue. If the Virtual Queue option is selected, the Callback conditional exit will be executed, allowing the scenario to collect the callback data and place the call in the virtual queue (see block [[#topic_scenario-builder-reference-guide/requestcallback|Request Callback]]). The Virtual Queue option applies to voice scenarios only. For more information, see the [[#topic_virtual-queue-tutorial/overview|Virtual Queue Tutorial]]. === Periodic reminder - repeat every === This setting allows you to specify the number of seconds you want the scenario to wait between playing the Periodic Reminder prompt. Set this field only if you want the scenario to play the Periodic Reminder prompt. Enter 0 if you want to disable this feature. This setting applies to voice scenarios only. === Keep playing hold music while ringing on agent === If selected, the ''Music on hold'' will continue after the Find Agent blocks exits; the prompt is stopped only when the subsequent [[#topic_scenario-builder-reference-guide/connectcall|Connect Call]] block actually connects the caller to the destination (destination answers). Otherwise, the caller will hear the ring-back tone from the moment the call is delivered to the agent and until the agent answers. This option only works if the block actually finds an agent; for all conditional exits, the hold music stops immediately. This setting applies to voice scenarios only. == Conditional Exits == The Find Agent block may take one of the following conditional exits: No Agents, Queue Limit, Escape Digit, Callback, or Timeout. === No Agents === The ''No Agents'' exit is taken if no agents with matching skills are logged in (or when the last such agent logs out before the call is routed.) === Queue Limit === Your service provider may have set up a limit for the number of items you can have queued for distribution to agents simultaneously (for all services combined). If an interaction processed by the given scenario exceeds this limit upon entering the queue, the ''Queue Limit'' exit will be used. Note that a repeated attempt to place the interaction in the same queue will result in the termination of the scenario. === Escape Digit === The caller presses the escape digit to exit the queue. The ''Escape Digit'' exit will be displayed only if the ''Escape button'' setting is defined (see below). This exit applies to voice scenarios only. === Callback === The ''Callback'' exit will be taken if the ''Virtual Queue'' option is offered to and is accepted by the caller. This exit applies to voice scenarios only. === Time Out === The ''Time Out'' exit will appear only if you define one or more escalation intervals for ''Agent skills required'', provided that the last interval is finite. The Time Out exit will be taken if the last interval expires before any agents with matching skills become available. Note that if the last matching agent logs out before the timeout expires, the No Agents exit will be taken. == Prompts == The Find Agent block can play any of the following prompts for the caller: Music on hold, Initial Prompt, EWT Announcement, Virtual Queue availability announcement, or Periodic reminder. === Music on hold === The scenario plays the ''Music on hold'' prompt while the call is in queue. If not defined, the [[#topic_contact-center-administrator-guide/audiotreatments|default ''Music on hold and in queue'' treatment]] will be played. The ''Keep playing hold music while ringing on agent'' parameter controls when the music is stopped. === Initial Prompt === If defined, this optional ''Initial Prompt'' will be played to the caller as soon as the call is placed in queue (i.e., before the ''Music on hold'' starts). === EWT Announcement === The voice scenario plays the ''EWT Announcement'' when providing the estimated wait time (EWT). The scenario uses the system to read the actual EWT. For example, the prompt announces ''The estimated wait time is'', and then the system announces the EWT, such as ''eight minutes''. === Virtual Queue availability announcement === The ''Virtual Queue availability announcement'' prompt is played to callers to offer them an option of requesting a callback instead of waiting in the queue. See the description of the ''Virtual Queue option'' for details. === Periodic reminder === The scenario will periodically play the ''Periodic reminder'' prompt to the call in queue at the frequency you set in the ''Periodic reminder - repeat every'' field. If you do not set this prompt, the reminder does not play. You can use the ''EWT Announcement prompt'' as a reminder prompt. === Keep playing hold music while ringing on agent === The scenario plays the ''Music on hold'' prompt while the call is in queue. If not defined, the [[#topic_contact-center-administrator-guide/audiotreatments|default ''Music on hold and in queue'' treatment]] will be played. The ''Keep playing hold music while ringing on agent'' parameter controls when the music is stopped. === Play random segment === The ''Play random segment'' option offers variety of queue [[#topic_contact-center-administrator-guide/audiotreatments|audio treatments]] for voice calls, allowing you to vary the audio treatments played while waiting in the queue. = Get Next Record= The Get Next scenario block provides a way for a scenario to retrieve the next or previous record from a recordset created by a previously executed blocks [[#topic_scenario-builder-reference-guide/dbexecute|DB Execute]], [[#topic_scenario-builder-reference-guide/fetchurl|Fetch URL]], [[#topic_scenario-builder-reference-guide/rightnowsearch|RightNow Search]], [[#topic_scenario-builder-reference-guide/salesforce.comsearch|Salesforce.com Search]], and [[#topic_scenario-builder-reference-guide/zendesksearch|Zendesk Search]]. [[File:Get-Next-Record-Scenario-Block.png|225px|Scenario Builder Get Next Record scenario block]] == Conditional Exits == The Get Next Record block may take the '''No more items''' conditional exit if no more items can be retrieved from the specified recordset. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Direction === Choose whether the next or the previous record should be retrieved. === Recordset name === ''Recordset name'' is the recordset from which the record should be retrieved. The name is selected from the list of available recordsets, which is populated from all [[#topic_scenario-builder-reference-guide/dbexecute|DB Execute]], [[#topic_scenario-builder-reference-guide/fetchurl|Fetch URL]], [[#topic_scenario-builder-reference-guide/rightnowsearch|RightNow Search]], [[#topic_scenario-builder-reference-guide/salesforce.comsearch|Salesforce.com Search]], and [[#topic_scenario-builder-reference-guide/zendesksearch|Zendesk Search]] blocks of the scenario. The columns of the retrieved records (if any) are stored in the scenario variables ''RS.[name]'' (e.g., ''RS.id''). [[File:Get-Next-Record-Scenario-Block-Settings.png|800px|thumbnail|center|Scenario Builder Get Next Record scenario block settings]]
[[#topic_scenario-builder-reference-guide/findagent|< Previous]] | [[#topic_scenario-builder-reference-guide/getstatistics|Next >]]
= Get Statistics= The Get Statistics scenario block obtains one or more statistics and saves their values in scenario variables for future use. [[File:Get-Statistics-Scenario-Block.png|225px|Get Statistics scenario block]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === add === Clicking the '''add''' link will add a statistic and specify the following: * '''Variable Name''': the name of the variable where the statistic will be stored. Variables are specified using the ''$(varname)'' format. * '''Statistic''': the type of statistic that is requested. * '''Service''': the service with respect to which the statistic is requested. By default, the service currently attributed to the given interaction. [[File:Get-Statistics-Settings.png|450px|thumbnail|center|Get Statistics scenario block settings]]
[[#topic_scenario-builder-reference-guide/getnextrecord|< Previous]] | [[#topic_scenario-builder-reference-guide/getuserconfiguration|Next >]]
= Get User Configuration= The Get User Configuration scenario block obtains one or more of the properties of a user, such as username, phone number, email address, or unique identifier, and saves them in scenario variables for future use. [[File:Get-User-Configuration-Block.png|225px|Scenario Builder Get User Configuration scenario block]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Find user by === ''Find user by'' specifies the type of the property that will be used to find the user. You can find a user by using the following properties: * '''Login ID''' – The username * '''Email address''' – The user’s email address * '''Phone''' – The user’s assigned phone extension or default hardphone number * '''User ID''' – The global unique identifier of this user in system configuration; global identifiers can be used, for example, to associate contacts/cases/interactions in third-party systems with agents who handled them === Value === ''Value'' specifies the value of the property that will be used to find the user. === User properties to return === Click '''add''' to select the type of property that you want to use in the scenario and the name of the variable where its value will be stored. The following property descriptions refer to their names as they appear in the Contact Center Administrator application. * '''First Name''' – The user’s first name * '''Last Name''' – The user’s last name * '''Login ID''' – The user’s username * '''Email address''' – The user’s email address * '''Softphone number''' – The user’s phone extension * '''Hardphone number''' – The user’s default hardphone number * '''Team ID''' – The global unique identifier of the user’s team in system configuration * '''Team name''' – The name of the user’s team * '''Voice Mail Greeting URL''' – The link to user’s currently selected voicemail greeting * '''Skill''' – The name of user’s skill from the specified group; this parameter can be used for group-based routing; see the description of option ''Specific skill from variable'' of the Find Agent block for more information * '''User ID''' – The global unique identifier of this user in system configuration; user ID can be used, for example, to associate contacts/cases/interactions in third-party systems with agents who handled them in order to facilitate personal routing; see the description of option ''Specific agent'' of the [[#topic_scenario-builder-reference-guide/findagent|Find Agent]] block for more information. Scenario variables can be specified as values using the ''$(varname)'' format. For more information, see ''Contact Center Administrator Guide'' sections [[#topic_contact-center-administrator-guide/users|Users]], [[#topic_contact-center-administrator-guide/teams|Teams]], and [[#topic_contact-center-administrator-guide/skilllevels|Skill Levels]]. [[File:Get-User-Configuration-Block-Settings.png|450px|thumbnail|center|Scenario Builder Get User Configuration scenario block settings]]
[[#topic_scenario-builder-reference-guide/getstatistics|< Previous]] | [[#topic_scenario-builder-reference-guide/goto|Next >]]
= Goto= The Goto scenario block redirects the processing flow of the scenario to a specified destination in the flowchart. [[File:Goto-Scenario-Block.png|225px|Scenario Builder Goto scenario block]] To redirect the flow using this block, follow these steps: # Add a Goto block to the desired location in the flowchart. The Scenario Builder will mark the block in red until you define a destination for it. # Select the Goto block in the flowchart. The Edit Pane will display a copy of the flowchart. # In the Edit Pane, click the desired Goto destination (i.e., the building block to which you want to redirect the flow using this Goto block). The flowchart displays the new name of the Goto block, which indicates the location in the flowchart to which the block redirects the processing flow. The format of the name is ''Goto “[destination block title]”''. The Scenario Builder will highlight the Goto block in red if you remove its destination block during editing. In the following example, a Goto block is used to direct a call to voicemail if the call is placed on a holiday. [[File:Goto-Block-Example.png|650px|thumbnail|center|Example of a Goto block redirecting a call to voicemail]]
[[#topic_scenario-builder-reference-guide/getuserconfiguration|< Previous]] | [[#topic_scenario-builder-reference-guide/if|Next >]]
= Identify Contact = The ''Identify Contact'' block performs a search for a contact and associates the contact with the current interaction if a single match is found. The block can search either internal or external sources, such as those configured in section [[#topic_contact-center-administrator-guide/identification|Call Center Configuration > Identification]]. [[File:Identify-Contact-522.PNG|225px|Identify Contact scenario block]] == Conditional Exits == The Identify Contact block may take one of the following conditional exits: Failed, No Data, or Multiple Matches === Failed === The ''Failed'' conditional exit is executed if the search operation or network connectivity to an external CRM site times out. === No Data === The ''No Data'' conditional exit is executed if no data matching the specified search criteria is found. === Multiple Matches === The ''Multiple Matches'' conditional exit is executed if the specified search yields multiple matches. == Settings == === Title Text === ''Title Text'' is the name of the instance of the block. Enter a name in the text field and the new name of the block will appear in the flowchart. === Search by === The ''Search by'' drop-down menu allows you to select the source of identification. You may select '''Email address''', '''External ID''', '''Messenger ID''', '''Phone''', or a [[Contact-center-administrator-guide/CustomFields#Contact|custom contact field]]. Note: Custom contact fields will not appear in the ''Search by'' menu unless the checkbox '''Searchable''' has been selected. For more information, see [[Contact-center-administrator-guide/CustomFields#Contact|Custom Fields]]. === Search address === The ''Search address'' field is where to enter a text or variable item containing the email address, external ID, messenger service ID, or telephone number of the contact to search for; search is limited to what option is selected in the [[#Searchby|Search by]] setting. === External Type / Messenger Type === If '''External ID''' is the selected [[#Searchby|Search by]] option, choose either '''Salesforce''' or '''Zendesk'''from the drop-down menu, as the external source. If '''Messenger ID''' is the selected [[#Searchby|Search by]] option, choose '''Facebook''', '''Telegram''', '''Viber''', '''LINE''', or '''Twitter''' as the messenger service source. === Time limit === The ''Time limit'' field is where you may enter a time limit, in seconds, for the search. The default time is 15 seconds and valid values range from one to 99 seconds. This setting is more important for external identification sources (e.g., Salesforce) that may be slow to return the values. It serves as a reminder for scenario writers that a call/chat can spend noticeable time in this block. [[File:Identify-Contact-Settings-522.PNG|650px|thumb|center|Identify Contact scenario block settings]] = If= The If scenario block allows branching of a scenario based on verification of some specified conditions. Multiple conditional exits (branches) can be configured in the same block. [[File:If-Scenario-Block.png|225px|Scenario Builder If scenario block]] == Branches and Conditions == A branch can include one or more logical expressions (conditions), where each condition verifies one the following: * Caller’s number * Current date * Current date and time * Current time * Day * Dialed number * Estimated waiting time * Scenario variable (HOP) * Scenario variable (number) * Scenario variable (string) Use the '''Add branch''' button to add a branch corresponding to the desired conditional exit. Provide a label that will identify the corresponding conditional exit in the flowchart. Click the '''add condition''' link to define a logical expression for verification of one of the above parameters. [[File:If-Block-Settings.png|450px|thumbnail|center|Scenario Builder If scenario block settings]] == Multiple Conditions == Multiple conditions in a branch can be joined by either the AND (default) or OR operator. * AND is used if all specified conditions in a branch must be met in order for the scenario to take the given branch exit. * OR is used when it is sufficient for one of the specified conditions to be met in order for the scenario to take the given branch exit. If necessary, add more branches as described. (Note that there is a limit of 20 branches per If block.) The branches are tried in the order in which they are defined in the block. If none of the branches leads to a positive verification, the block that directly follows the given ''If'' block in the flowchart is executed. == Typical Uses == The following are examples of some typical uses of the If block. === Current Date and Time === The ''Current date and time'' condition is normally used to check the interaction arrival time against the Hours of Operation (HOP) specified in the associated [[#topic_contact-center-administrator-guide/dial-in|scenario entry]], as illustrated in the [[#topic_scenario-builder-reference-guide/scenarioexample|Scenario Example]]. In addition, the ''current date and time'' condition can be used to check the current date and time against the configured calendar hours of operation (HOP) without involving an HOP variable. [[File:Current-Date-Time-316.png|650px|thumbnail|center|The current date and time is checked against the default HOP, without using a variable]] === Current Time === The ''Current Time'' condition can be used along with a Find Agent block to set queue limits based on the time of day. For example, the Current Time condition may be set in the If block to find an agent and set queue limits: "If 10-5 (where ''10-5'' refers to ''10:00 am to 5:00 pm''), find an agent with queue limit of 20" and/or "If 5-7 (where ''5-7'' refers to ''5:00 pm to 7:00 pm''), find an agent with queue limit of 10." === Estimated Waiting Time === The ''Estimated Waiting Time'' condition can be used to determine further processing of the interaction based on the time that the given interaction is likely to wait in the service queue before it can be delivered to an agent. (Note, however, that the estimated waiting time condition related to the Virtual Queue function is defined in the [[#topic_scenario-builder-reference-guide/findagent|Find Agent]] block.) === Scenario variable (HOP) === The ''Scenario variable (HOP)'' condition can be used to check the interaction arrival time against any other HOP defined as a [[#topic_contact-center-administrator-guide/dial-in|scenario parameter]].
[[#topic_scenario-builder-reference-guide/goto|< Previous]] | [[#topic_scenario-builder-reference-guide/internalmessage|Next >]]
= Internal Message= The Internal Message scenario block is used to send an [[#topic_agent-guide/howtouseinternalchat|internal chat]] message to a specified user. [[File:Internal-Message-Block.png|225px|Scenario Builder Internal Message scenario block]] == Conditional Exits == The Internal Message block may take the '''Failed''' conditional exit if the attempt to send the message has failed. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Username === This is the username of the message recipient. === Message === The ''message'' is the text of the message to be sent. Variables in the ''$(varname)'' format can be used in the message text. [[File:Internal-Message-Block-Settings.png|450px|thumbnail|center|Scenario Builder Internal Message scenario block setting]]
[[#topic_scenario-builder-reference-guide/if|< Previous]] | [[#topic_scenario-builder-reference-guide/log|Next >]]
= Log= The Log scenario block adds a message to the Scenario Engine log file. This block is intended for debugging and testing purposes only, and it may be removed in production versions of scenarios. [[File:Log-Scenario-Block.png|225px|Scenario Builder Log scenario block]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Text message === ''Text message'' is the free-form content of the message. You can use scenario variables in the text (e.g., ''This is a test log message for call from $(item.from) to $(item.to)''). === Log Level === ''Log Level'' specifies the Scenario Engine log level where this message will appear. [[File:Log-Scenario-Block-Settings.png|350px|thumbnail|center|Scenario Builder Log scenario block settings]]
[[#topic_scenario-builder-reference-guide/internalmessage|< Previous]] | [[#topic_scenario-builder-reference-guide/menu|Next >]]
= Menu= The Menu scenario block plays a menu prompt with options to choose from and then allows the caller to select an option by pressing a DTMF key. [[File:Menu-Scenario-Block.png|225px|Scenario Builder Menu scenario block]] The Menu block moves through the following steps: # The menu prompt announces options with corresponding keys from a phone keypad (0-9, *, #). Each selected option corresponds to a conditional exit. # The caller presses the key corresponding to the desired menu option. # The block receives the input from the caller and processes the corresponding conditional exit. If a key is not defined, it has no meaning and is considered invalid. The Menu block informs the caller if the input is invalid, or if the time allotted for the caller to enter digits expires. If a caller enters an invalid option or does not enter an option in the allotted time, the scenario executes the subsequent block in the flowchart. To assign a menu option to a key, select the checkbox corresponding to that key in the '''Valid choices''' section. When you enable a key, a text field appears where you can enter a description of the option enabled by this key. The description you enter here will appear in the flowchart as the label of the conditional exit corresponding to the key. By default, the label is the key name. == Conditional Exits == With the Menu block, you can configure a conditional exit for each telephone key (0-9, *, #). By default, the block has conditional exits for keys 1 and 2. == Prompts == === Prompt to play === ''Prompt to play'' is the prompt that the scenario initially plays to the caller. Usually this prompt explains the available menu options. For example, the prompt can say, ''For customer service, press 1, for technical support, press 2, to speak with an operator, press the pound sign.'' === Timeout prompt === The ''Timeout prompt'' is the prompt that the scenario plays when the time allotted for the caller to respond expires. === Invalid input prompt === The ''Invalid input prompt'' is the prompt that the scenario plays when the caller enters an invalid key. Click '''Select''' to choose to ignore a specific invalid digit selection. === Short version of main prompt === The ''short version of the main prompt'' (''Prompt to play'') is what the scenario plays after the ''Timeout prompt'' and ''Invalid input prompt''. This prompt can remind the caller about the available menu options. == Settings == [[File:Menu-Block-Settings.png|650px|thumbnail|center|Scenario Builder Menu scenario block settings]] === Allow interrupting prompt by a phone button === Select this setting in order to allow callers to interrupt the prompts by entering the desired option at any time; uncheck this setting if input is not allowed until the prompt is complete. === Input Timeout === ''Input Timeout'' is the number of seconds that the scenario waits for a caller’s input after playing the initial prompt or its short version before playing the Timeout prompt. If left blank, the block will wait for input indefinitely. === Retries === ''Retries'' represents the maximum number of times that the voice application will allow the caller to provide input after the input timeout expiration or invalid input. If the number of retries is reached without successful input, the scenario moves to the next block in the flowchart. This parameter can either be set explicitly or via a scenario variable. This parameter can be set to zero to exit menu without retries.
[[#topic_scenario-builder-reference-guide/log|< Previous]] | [[#topic_scenario-builder-reference-guide/playprompt|Next >]]
= Play Prompt= The Play Prompt scenario block plays a voice or music prompt. This building block is also useful for reporting an error or the outcome of an operation for testing purposes. For scenarios in which input from the caller is expected in response to a prompt, use the [[#topic_scenario-builder-reference-guide/menu|Menu]] and [[#topic_scenario-builder-reference-guide/collectdigits|Collect Digits]] blocks. [[File:Play-Prompt-Block.png|225px|Play Prompt scenario block]] == Prompts == With the Play Prompt block, ''Prompt to play'' is the prompt that the scenario will play to the caller. Click '''select''' to select (or create) the prompt that this block will play. Prompts already defined for this scenario will appear in a new dialog window. Select the desired prompt and click '''Select'''. To create a new prompt, click the '''Add new''' button. '''Note:''' Some service configuration changes that affect agent behavior are not picked up dynamically by Agent Desktop. Thus, after making a change to voice prompts, we recommend that all affected logged-in agents refresh their browser page. == Settings == === Allow interrupting prompt by phone button === Select this checkbox to allow callers to interrupt the prompt by pressing a phone key. === Re-use digit from interrupting button in the next block === Select this checkbox if the digit(s) entered by the user should be preserved for potential use in the scenario block that immediately follows this one. If the next block is [[#topic_scenario-builder-reference-guide/menu|Menu]] or [[#topic_scenario-builder-reference-guide/collectdigits|Collect Digits]], its initial prompt will be interrupted immediately and the preserved digit(s) will be used as input. If the next block is another Play Prompt block, its prompt will be skipped altogether as long as the option ''Allow interrupting prompt by phone button'' is selected in that block. === Exit immediately and continue playing prompt in background === Select this checkbox to exit the block immediately and proceed with normal scenario execution while the prompt playback continues in the background until one of the following occurs: # Termination of the call by the listening party # Execution of the [[#topic_scenario-builder-reference-guide/exit|Exit]] block # Execution of the [[#topic_scenario-builder-reference-guide/stopprompt|Stop Prompt]] block # Execution of any other scenario block containing a voice prompt. Note one exception to this fourth action: if another Play Prompt block is executed with this option unchecked, the requested prompt will be played once, and the playback of the original continuous prompt will resume. [[File:Play-Prompt-Block-Settings.png|450px|thumbnail|center|Scenario Builder Play Prompt scenario block settings]]
[[#topic_scenario-builder-reference-guide/menu|< Previous]] | [[#topic_scenario-builder-reference-guide/record|Next >]]
= Record= The Record scenario block provides a way for a scenario to record a message over the phone and store it as a shared voice segment for subsequent use in other scenarios. Such a shared voice segment must first be [[#topic_contact-center-administrator-guide/sharedvoicesegments|created via the Contact Center Administrator application]] and then selected as the value of property ''Shared voice prompt'' of this block. [[File:Record-Block.png|225px|Scenario Builder Record scenario block]] This block will record the message in the “current” scenario language. The default current language is ''English - United States''. To change the current language, use the [[#topic_scenario-builder-reference-guide/setpromptlanguage|Set Prompt Language]] block. To record one voice segment in two different languages in the same scenario, you can set the first desired language, use the Record block, then set the second language, and use the Record block again with the same setting of the ''Shared voice prompt'' property. '''Note:''' Before Bright Pattern Contact Center version 3.7.7, a combination of the Record and [[#topic_scenario-builder-reference-guide/email|EMail]] scenario blocks were used to implement recording and distribution of voicemail messages. In version 3.7.7, the [[#topic_scenario-builder-reference-guide/voicemail|Voicemail]] block was introduced to combine the above functions and support various storage and playback options specific to voicemail. Starting from version 3.8, Bright Pattern Contact Center Software also supports a [[#topic_contact-center-administrator-guide/voicemail|built-in voicemail function]]. == Conditional Exits == The Record block may take one of the following conditional exits: Silence, Error, Max Recording Time Exceeded, or Cancelled. [[File:Record-Block-Conditional-Exits.png|300px|thumbnail|center|Scenario Builder Record conditional exits]] === Silence === Silence is detected. The ''Detect Silence'' checkbox must be selected, and the ''Cancel on initial silence of'' parameter must be specified. === Error === A scenario block error occurs. === Max Recording Time Exceeded === The ''Maximum duration'' is exceeded. === Cancelled === The recording is cancelled by the user. == Prompts == The Record block plays the '''Confirmation menu prompt''' after replaying the recorded message. This prompt will normally offer the following options: accept the recording, record again, and cancel recording. The user will be expected to select the desired option by pressing the phone key specified for each option (by default, these are digits 1, 2, and 3, respectively). == Settings == [[File:Scenario-Builder-Record-Block-52.PNG|650px|thumbnail|center|Scenario Builder Record scenario block settings]] === Title text === The name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Maximum duration === Specifies the maximum duration of the recording in seconds. === Recording encoding === The type of encoding method being used. Select G.711 (default) for the best quality, or GSM6.10 for a smaller file. === Recording mode === Allows you to select from either of the following recording options: ==== Shared Voice Segment that can be used in IVR Prompts ==== Allows you to select any shared voice segment you have configured to use in IVR prompts. [[#topic_contact-center-administrator-guide/sharedvoicesegments|Shared Voice Segments]] are configured in Contact Center Administrator. ==== Store recording accessible via a URL ==== Allows you to access recordings via URL through either Agent Desktop or when sent as an email attachment. '''Note''': In order to enable these options, there are additional configuration steps listed per the following methods. ==== Name of the variable to store secure URL to play via Agent Desktop ==== Allows you to name a variable to store recordings to play via Agent Desktop. For this feature to work, you must have [[#Transcribe_recording_.28uses_Speech_to_Text_Integration_Account.29|Transcribe recording (uses Speech To Text integration account)]] and [[#Natural_Language_Understanding_.28sentiment.29_account|Natural Language Understanding (NLU)]] checked and configured, as well as variables entered in fields corresponding with [[#Name_of_the_variable_to_store_text_transcript_of_the_recording|text transcripts]] and [[#Name_of_the_variable_to store_sentiment_of_recording|sentiments]]. '''Note''': To ensure this feature is working properly, you may need to make sure that the recording, transcript, and sentiment were received (use the [[#topic_scenario-builder-reference-guide/log|Log]], [[#topic_scenario-builder-reference-guide/email|EMail]], or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] blocks to obtain variables). You may also need to verify that clicking on the received recording URL makes Agent Desktop come up in your browser and requires authentication. After logging in successfully, the URLs will become available. ==== Name of the variable to store recording URL to use as email attachment ==== Allows you to name a variable to store the recording as an email attachment (e.g., “recording_url”). '''Note''': This variable must be connected to an [[#topic_scenario-builder-reference-guide/email|EMail]] block in the same scenario to send the URL via email (e.g., “$(recording_url)”). === Detect silence === If selected, the Record block will analyze the voice stream in order to reject empty messages and determine the end of message. The ''Detect silence'' option requires more processing power. === Confirm before saving === If selected, the Record block will play the recording back to the caller and ask the caller to confirm or re-record the message before it is saved. === Beep at start of recording === If selected, the Record block will provide a tone indicating the beginning of the recording. === Confirmation menu prompt (after recorded message replay) === The name of the confirmation menu segment that will be used after the recorded message replay. To configure the menu prompt message and/or language, click on the '''Select option''' link to bring up the prompts list. === Accept recording" DTMF (default 1) === The touch-tone value that will be used to accept the recording (e.g., "Press 1 to accept the recording."). The default value is 1. === Record again" DTMF (default 2) === The touch-tone value that will be used to record the message again (e.g., "Press 2 to re-record the message."). The default value is 2. === Cancel recording" DTMF (default 3) === The touch-tone value that will be used to cancel recording (e.g., "Press 3 to cancel."). The default value is 3. === Transcribe recording (uses Speech to Text Integration Account) === When selected, this uses your integrated [[5.2:contact-center-administrator-guide/IntegrationAccounts#Speech_To_Text_Integration_.28STT.29|Speech To Text]] account to transcribe recorded conversations. '''Note''': This option is only available if the setting [[#Store_recording_accessible_via_a_URL|Store recording accessible via a URL]] is selected. === Natural Language Understanding (sentiment) account === Allows you to select the [[5.2:contact-center-administrator-guide/IntegrationAccounts#Natural_Language_Understanding_Integration|Natural Language Understanding (NLU)]] account you wish for sentiment recording. === Name of the variable to store text transcript of the recording === If a [[#Transcribe_recording_.28uses_Speech_to_Text_Integration_Account.29|Speech To Text (STT)]] account has been selected for this Record block, this field allows you enter the name the variable you want associated with the STT account (e.g., "transcript_survey"). '''Note''': This variable may be linked to [[scenario-builder-reference-guide/SaveSurveyResponse#Conversation_or_recording_text_transcript|Save Survey Response]] block for saving survey responses related to recorded text transcripts. === Name of the variable to store sentiment of recording === If a [[#Natural_Language_Understanding_.28sentiment.29_account|Natural Language Understanding (NLU)]] account has been selected for this Record block, this field allows you to name the variable you want associated with the sentiments determined by your NLU account (e.g., "sentiment_survey"). '''Note''': This variable may be linked to [[scenario-builder-reference-guide/SaveSurveyResponse#Conversation_or_recording_sentiment|Save Survey Response]] block for saving survey responses related to recorded sentiments. = Request Callback= The Request Callback scenario block implements the ''Virtual Queue'' option when such an option is requested via an associated [[#topic_scenario-builder-reference-guide/findagent|Find Agent]] block. The Request Callback block takes the following actions: # Confirms the callback request # Releases the original inbound call # Places the associated callback request in the virtual queue # Waits for a matching agent # Makes the callback when an agent becomes available or the estimated wait time (EWT) expires For more information, see the [[#topic_virtual-queue-tutorial/overview|''Virtual Queue Tutorial'']]. The block uses the skill requirements set in the Find Agent block. [[File:Request-Callback-Block.png|225px|Scenario Builder Request Callback scenario block]] == Conditional Exits == The Request Callback block may take one of the following conditional exits: No Agents, Time Out, No Answer, or Busy. === No Agents === The No Agents conditional exit is executed if no matching agents are logged in (or the last matching agent logs out while the callback request is waiting in the queue). === Time Out === The Time Out conditional exit is executed if no matching agents are found or predicted to be found within the time specified in the ''Cancel request after'' parameter. === No Answer === The No Answer conditional exit is executed if the party that requested the callback does not answer when called back. This exit will also be used for any other reason that the callback attempt might fail, except when the party is ''busy''. === Busy === The Busy conditional exit is executed if the party that requested the callback is busy when called back. == Prompts == The Request Callback block plays the ''Confirmation prompt'' to confirm that the callback request has been accepted. The caller may release the call at any time during the prompt. Otherwise, the block will release the call as soon as the prompt is finished. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Confirmation prompt === You can select a ''Confirmation prompt'' from the list of existing prompts, or you can create your own. === Callback phone === ''Callback phone'' is the phone number to be called during the callback attempt. The caller ID (ANI) of the original inbound call is used by default. === Cancel request after === The ''Cancel request after'' setting specifies the time after which the virtual call (i.e., the callback request) will be canceled if no matching agents can be found. === Start dialing === If an agent becomes available for a given virtual call before the estimated wait time (EWT), the callback is made at the moment when the agent becomes available. Otherwise, the callback attempt is made a few seconds before EWT expiration, based on the prediction that an agent will have become available by the time the callback is answered by the customer. EWT is a rolling average of the last 20 calls, on a per-service basis, that were answered. This reflects the average time of how long those calls waited in queue. The ''Start dialing'' setting defines how many seconds in advance of the EWT expiration that the callback attempt shall be made. (Note that if an agent does not become available at that time, the answered call is placed in the first position in the service queue to be connected to the next available agent.) You can choose to have the Virtual Queue option ignore (i.e., override) the EWT by setting the value in ''Start dialing'' to "0" (zero). Doing so will make the Virtual Queue option ignore the EWT, and instead, reserve an agent. When a skilled agent becomes ''Ready'', the callback will be initiated. '''Note:''' If you set ''Start dialing'' to zero, the reserved agent will not be able to change the agent state to ''Not Ready''. Because this will pose a change in agent behavior, agents should be alerted about such a change when modifications to this setting are made. === No Answer Timeout === ''No Answer Timeout'' specifies for how long the block will wait for the party to answer before taking the No Answer conditional exit. [[File:Request-Callback-Block-Settings.png|750px|thumbnail|center|Scenario Builder Request Callback scenario block settings]]
[[#topic_scenario-builder-reference-guide/record|< Previous]] | [[#topic_scenario-builder-reference-guide/requestinput|Next >]]
= Request Input= The Request Input scenario block is used to request information from a chat customer. It can be used, for example, to ask for customer information at the beginning of the chat session (e.g., first and last name, email address, etc.), or to offer the customer a satisfaction survey at the end of the session. [[File:Request-Input-Block.png|225px|Scenario Builder Request Input scenario block]] == Conditional Exits == The Request Input block may take the ''Timeout'' conditional exit if no customer input is received within the specified timeout. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Prompt with === This setting represents the type of prompt to be used to request input. * To request input via a message directly in the chat window, select '''text message''' and specify the text in the '''Message to send''' field. * To request input via a predefined form, select '''form''' and use the '''Form name''' field to specify the name of the form that is to be displayed by the client chat application. These forms are defined in [[#topic_chat-widget-configuration-guide/in-scenarioandmanually-sentforms|Chat Widget Configuration Application > In-Scenario and Manually-Sent forms]]. '''Note:''' Starting with Bright Pattern Contact Center version 3.12, option ''HTML'' is no longer available for new chat scenarios. All forms should now be created in the client application and called from the chat scenario via the ''form'' option. Forms created in previous software versions using this option will continue to be supported. === Timeout after === The ''Timeout after'' setting specifies for how long the block will wait for customer’s input before taking the Timeout conditional exit. [[File:Request-Input-Block-Settings.png|450px|thumbnail|center|Scenario Builder Request Input scenario block settings]] == Results == If the requested input data comes from a form, its field values can be used as $(item.externalChatData.abc) where abc is a field name. If the requested input comes as a chat message, $(item.message) can be used to access the text. = Request Skill or Service= The Request Skill or Service scenario block sets the skill requirements for the given interaction. Note that the minimum skill levels are set in the [[#topic_scenario-builder-reference-guide/findagent|Find Agent]] block. [[File:Request-Skill-Block.png|225px|Scenario Builder Request Skill or Service scenario block]] == Settings == The Request Skill or Service scenario block has two drop-down lists. The first one lists the skill groups currently configured in the system. The second one lists the skills configured for the selected skill group. Settings should be configured as follows: * In the first drop-down list, select the skill group containing the skill that an agent must have in order to be considered qualified to handle this interaction. * In the second drop-down list, select the skill that an agent must have in order to be considered qualified to handle the interaction. The label of the Request Skill block will appear in the flowchart in this format: ''Request Skill or Service “[skill group]=[skill]”'' * To remove all possible prior skill requirements for this interaction and to use only the skills specified in this block, select the '''Reset prior skill requirements''' checkbox. [[File:Request-Skill-Block-Settings.png|650px|thumbnail|center|Scenario Builder Request Skill or Service scenario block settings]]
[[#topic_scenario-builder-reference-guide/requestcallback|< Previous]] | [[#topic_scenario-builder-reference-guide/retrieveinternalrecord|Next >]]
= Retrieve Internal Record= The Retrieve Internal Record scenario block allows you to get data about internal records. Note: This scenario block will be replaced by the [[#topic_scenario-builder-reference-guide/brightpatternsearchobject|Bright Pattern Search Object]] block starting in version 5.2.2 of Bright Pattern Contact Center software. While the block will still be supported in scenarios created with previous versions of the software, it will not be possible to add this block to any new scenarios, post upgrade. [[File:Retrieve-Internal-Block-50.PNG|225px|Scenario Builder Comment scenario block]] == Conditional Exits == The Retrieve Internal Record block may take the ''Failed'' conditional exit if the attempt to retrieve the record has failed. The block may take the ''No Data'' conditional exit if no internal record data is available. == Settings == [[File:Retrieve-Internal-Record-50.PNG|350px|thumbnail|center|Scenario Builder Retrieve Internal Record scenario block settings]] === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Object Type === ''Object Type'' is the type of internal record object to be retrieved. You can select one of the following objects from the drop-down menu: * Case * Contact * Company * Activity === Object ID === ''Object ID'' is the identifier of the internal record object to be retrieved. === Variable name for object JSON === ''Variable name for object JSON'' is the name of the variable that will be used as identifier for the internal record object to be retrieved. The variable name of object ID will be set only if the block succeeds. = RightNow Create Object= The RightNow Create Object scenario block creates a specified object in the RightNow database. Note that to populate the custom fields in RightNow activity history records the [[#topic_scenario-builder-reference-guide/attacheddata|Attached Data]] block must be used. [[File:RightNow-Create-Object-Block.png|225px|Scenario Builder RightNow Create Object scenario block]] == Conditional Exits == The RightNow Create Object block may take the ''Failed'' conditional exit if the create operation has failed. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Object type === ''Object type'' is the type of RightNow object to be created. You can either select one of the standard objects from the drop-down menu, or you can enter the name of the desired custom object type. === Variable name of object ID === This is the name of the variable that will be used as identifier for the RightNow object to be created. The variable name of object ID will be set only if the block succeeds. === Set fields === This setting is reserved. === Raw JSON === The ''Raw JSON'' parameter is where object properties are specified in JSON format. The code and the body of the received HTTP response will be stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'', respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed attempt to create an object. For more information, see the description of variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']]. [[File:RightNow-Create-Object-Block-Settings.png|450px|thumbnail|center|Scenario Builder RightNow Create Object scenario block settings]]
[[#topic_scenario-builder-reference-guide/retrieveinternalrecord|< Previous]] | [[#topic_scenario-builder-reference-guide/rightnowscreenpop|Next >]]
= RightNow Screen Pop= The RightNow Screen Pop scenario block specifies RightNow data to be displayed for the agent when the interaction is connected to this agent through the [[#topic_scenario-builder-reference-guide/connectcall|Connect Call]] block. [[File:RightNow-Screen-Pop-Block.png|225px|Scenario Builder RightNow Screen Pop scenario block]] == Settings == === Title text === ''Title text'' is the name of the block instance. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Pop screen upon answer === By default, the screen pop occurs as soon as the interaction is delivered to the agent (i.e., during the alert phase); select this checkbox if you want the screen pop to occur when the agent accepts the interaction for handling. === pop object === Use this option when the scenario can precisely identify the object associated with the interaction using object ID. A RightNow page with the object properties will be displayed to the agent. === pop search results === Use the ''Search results'' option to run a predefined RightNow report for object selection. The results of the report will appear on the agent's screen. * '''Report ID''' - The identifier of the RightNow report to be run for object selection * '''Filters''' - Click ''add'' to define a filter for selecting records within this report. Multiple filters can be defined. ** '''Expression''' - The table name and field name from the RightNow report definition that will be used as a selection criterion (e.g., ''contacts.any_phone_raw'') ** '''Operator''' - The operator used for selection ** '''Value''' - The Value can be a single value, a list of values, or a value range. Values can be defined as scenario variables (e.g., ''$(ANI)''). === Cancel screen pop === The available interaction data cannot be used to identify any relevant RightNow records. Use the ''Cancel screen pop'' option to cancel screen pop of a specific RightNow page that may have been set by a previous use of this block in the same scenario. === Object Identifier === ''Object Identifier'' is the identifier of the RightNow object to be displayed. It must be specified if the ''Object'' option is selected, and it may be specified as an application variable in the form ''$(varname)''. === Object type === ''Object type'' is the type of the RightNow object to be displayed. [[File:RightNow-Screen-Pop-Block-Settings.png|450px|thumbnail|center|Scenario Builder RightNow Screen Pop scenario block settings]]
[[#topic_scenario-builder-reference-guide/rightnowcreateobject|< Previous]] | [[#topic_scenario-builder-reference-guide/rightnowsearch|Next >]]
= RightNow Search= The RightNow Search scenario block executes the specified RightNow record selection statement written in the RightNow Object Query Language (ROQL). [[File:RightNow-Search-Block.png|225px|Scenario Builder RightNow Search scenario block]] The columns of the first record of retrieved recordset are stored in variables ''<recordset_name>.<column_name>''. For that statement, the results will be stored in variables ''Recorset.id'' and ''Recordset.name''. The number of returned records is stored in variable ''<recordset_name>.__count__'' (e.g., ''RS.__count__.''). Note the double underscores in front and after count; they are used to reduce the chance of confusing the name of this variable with a column name in a recordset. To iterate through the recordset, use the [[#topic_scenario-builder-reference-guide/getnextrecord|Get Next Record]] block. == Conditional Exits == The RightNow Search block may take one of the following conditional exits: Failed or No Data. === Failed === The ''Failed'' conditional exit is executed if the search operation failed. === No data === The ''No data'' conditional exit is executed if no data matching the specified search criteria is found. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === ROQL Query === ''ROQL Query'' is the record selection statement in the RightNow Object Query Language. It may contain application variables specified as ''$(varname)''. === Recordset name === ''Recordset name'' is the name of the recordset that will be retrieved via this search operation. The code and the body of the received HTTP response is stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'' respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed search attempt. For more information, see the description of the variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']]. [[File:RightNow-Search-Block-Settings.png|450px|thumbnail|center|Scenario Builder RightNow Search scenario block settings]]
[[#topic_scenario-builder-reference-guide/rightnowscreenpop|< Previous]] | [[#topic_scenario-builder-reference-guide/rightnowselectaccount|Next >]]
= RightNow Select Account= Your contact center configuration may contain multiple RightNow [[#topic_contact-center-administrator-guide/integrationaccounts|integration accounts]] for access to different RightNow systems. Use the RightNow Select Account block to specify the integration account that will be used by subsequent RightNow blocks in the given scenario. If this block is not used, all RightNow blocks in the given scenario will use access data from the integration account marked as ''Default account''. [[File:RightNow-Select-Account-Block.png|225px|Scenario Builder RightNow Select Account scenario block]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Account === ''Account'' is the name of the RightNow integration account that will be used for access to RightNow data by subsequent RightNow blocks in the given scenario. [[File:RightNow-Select-Account-Block-Settings.png|650px|thumbnail|center|Scenario Builder RightNow Select Account scenario block settings]]
[[#topic_scenario-builder-reference-guide/rightnowsearch|< Previous]] | [[#topic_scenario-builder-reference-guide/rightnowupdate|Next >]]
= RightNow Update= The RightNow Update scenario block updates the properties of the specified RightNow object. Note that to populate the custom fields in RightNow activity history records, the [[#topic_scenario-builder-reference-guide/attacheddata|Attached Data]] block must be used. [[File:RightNow-Update-Object-Block.png|225px|Scenario Builder RightNow Object scenario block]] == Conditional Exits == The RightNow Update block may take one of the following conditional exits: Failed or No data. === Failed === The ''Failed'' conditional exit is executed if the update operation failed. === No data === The ''No data'' conditional exit is executed in the specified object is not found. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Object Type === ''Object type'' is the type of RightNow object to be created. You can either select one of the standard objects from the drop-down menu or enter the name of the desired custom object type. === Object Identifier === ''Object Identifier'' is the identifier of the object to be updated. === Set fields === This setting is reserved. === Raw JSON === ''Raw JSON'' is where the object properties to be updated are specified in JSON format. The code and the body of the received HTTP response is stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'' respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed attempt to update an object. For more information, see the description of the variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']]. [[File:RightNow-Update-Object-Block-Settings.png|350px|thumbnail|center|Scenario Builder RightNow Object scenario block settings]]
[[#topic_scenario-builder-reference-guide/rightnowselectaccount|< Previous]] | [[#topic_scenario-builder-reference-guide/salesforce.comdelete|Next >]]
= Salesforce.com Delete= The Salesforce.com Delete scenario block is the part of [http://www.brightpattern.com/call-center-software/salesforce-integration/ Salesforce.com Integration with Bright Pattern Contact Center]. This block deletes the specified Salesforce.com (SFDC) object from the SFDC database. [[File:Salesforce-Delete-Block.png|225px|Scenario Builder Salesforce.com Delete scenario block]] == Conditional Exits == The Salesforce.com Delete block may take one of the following conditional exits: Failed or No Data. === Failed === The ''Failed'' conditional exit is executed if the delete operation failed. === No Data === The ''No Data'' conditional exit is executed in the specified object is not found. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Object type name === ''Object type name'' is the type of the SFDC object to be deleted as defined in the SFDC application. It may be specified as an application variable in the ''$(varname)'' format. === Object ID === ''Object ID'' is the identifier of the SFDC object to be deleted as defined in the SFDC application. The Object ID may be specified as an application variable in the ''$(varname)'' format. The code and the body of the received HTTP response is stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'', respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed attempt to delete an object. For more information, see the description of the variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']]. [[File:Salesforce-Delete-Block-Settings.png|450px|thumbnail|center|Scenario Builder Salesforce.com Delete scenario block settings]]
[[#topic_scenario-builder-reference-guide/rightnowupdate|< Previous]] | [[#topic_scenario-builder-reference-guide/salesforce.cominsert|Next >]]
= Salesforce.com Insert= The Salesforce.com Insert scenario block is the part of [http://www.brightpattern.com/call-center-software/salesforce-integration/ Salesforce.com Integration with Bright Pattern Contact Center] This block creates the specified Salesforce.com (SFDC) object in the SFDC database. Note that to populate the custom fields in SFDC activity history records, the [[#topic_scenario-builder-reference-guide/attacheddata|Attached Data]] block must be used. [[File:Salesforcecom-Insert-Block.png|225px|Scenario Builder Salesforce.com Insert scenario block]] == Conditional Exits == The Salesforce.com Insert block may take the ''Failed'' conditional exit if the insert operation fails. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Object type name === This is the type of the SFDC object to be created as defined in the SFDC system. It may be specified as an application variable in the ''$(varname)'' format. === Variable name of object ID === This is the name of the variable that will be used as identifier for the SFDC object to be created. It will be set only if the block succeeds. === Object fields === ''Object fields'' are object properties. Click ''add'' and specify the property ''Name'' as defined in the SFDC system. Then specify the desired ''Value''. Repeat for the remaining object properties. Field values may be specified as application variables in the ''$(varname)'' format. The code and the body of the received HTTP response will be stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'', respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed attempt to create an object. For more information, see the description of the variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']]. [[File:Salesforcecom-Insert-Block-Settings.png|350px|thumbnail|center|Scenario Builder Salesforce.com Insert scenario block settings]]
[[#topic_scenario-builder-reference-guide/salesforce.comdelete|< Previous]] | [[#topic_scenario-builder-reference-guide/salesforce.comscreenpop|Next >]]
= Salesforce.com Screenpop= The Salesforce.com Screenpop scenario block is the part of [http://www.brightpattern.com/call-center-software/salesforce-integration/ Salesforce.com Integration with Bright Pattern Contact Center] This block specifies the Salesforce.com (SFDC) data to be displayed for the agent when the interaction is delivered to this agent through the [[#topic_scenario-builder-reference-guide/connectcall|Connect Call]] block. [[File:Salesforcecom-Screenpop-Block.png|225px|Scenario Builder Saleforce.com Screenpop scenario block]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Screenpop action === ''Screenpop action'' refers to the type of data to be displayed. * The ''Show object'' option can be used when the scenario can identify the object associated with the interaction. An SFDC page with the object properties will be displayed to the agent. * The ''Show query results'' option can be used if such a record cannot be identified precisely, but the available interaction data can be used as search criteria for relevant records. An SFDC page with search results will be displayed. * The ''No screenpop'' option can be used to cancel screen pop of a specific SFDC page that may have been set by a previous use of this block in the same scenario. === Object ID === ''Object ID'' is the identifier of the SFDC object to be displayed. It must be specified if the ''Show object'' option is selected. It can be specified as an application variable in the ''$(varname)'' format. === Search terms === ''Search terms'' are the same as search criteria. They may be specified as application variables in the ''$(varname)'' format, and they must be specified if the ''Show query results'' option is selected. [[File:Salesforcecom-Screenpop-Block-Settings.png|800px|thumbnail|center|Scenario Builder Saleforce.com Screenpop scenario block settings]]
[[#topic_scenario-builder-reference-guide/salesforce.cominsert|< Previous]] | [[#topic_scenario-builder-reference-guide/salesforce.comsearch|Next >]]
= Salesforce.com Search= The Salesforce.com Search scenario block is the part of [http://www.brightpattern.com/call-center-software/salesforce-integration/ Salesforce.com Integration with Bright Pattern Contact Center]. [[File:Salesforcecom-Search.png|225px|Scenario Builder Saleforce.com Search scenario block]] This block executes the specified Salesforce.com (SFDC) record selection statement written in either the Salesforce Object Query Language (SOQL) or Salesforce Object Search Language (SOSL). Scenario variables can be used in this statement in the ''$(varname)'' from. Consider this example of an SOQL statement that uses the ''$(ANI)'' variable: ''SELECT id, name FROM Accounts WHERE phone = ‘$(ANI)’''. The columns of the first record of retrieved recordset are stored in variables ''<recordset_name>.<column_name>''. For that statement, the results will be stored in variables ''Recorset.id'' and ''Recordset.name''. The number of returned records is stored in variable ''<recordset_name>.__count__'' (e.g., ''RS.__count__''). (Note the double underscores in front and after count; they are used to reduce the chance of confusing the name of this variable with a column name in a recordset.) To iterate through the recordset, use [[#topic_scenario-builder-reference-guide/getnextrecord|Get Next Record]] block. == Conditional Exits == The Salesforce.com Search block may take one of the following conditional exits: Failed or No Data. === Failed === The ''Failed'' conditional exit is executed if the search operation failed. === No Data === The ''No Data'' conditional exit is executed if no data matching the specified search criteria is found. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Name the retrieved recordset === This is the name of the recordset that will be retrieved via this search operation. ''Name of the retrieved recordset'' is a mandatory field. === Query language === ''Query language'' is the language used for the data query. Possible language options include the Salesforce Object Query Language (SOQL) and Salesforce Object Search Language (SOSL). Unlike SOQL, which can only query one object at a time, a single SOSL query can be used to search multiple objects, which can both simplify and improve efficiency of searches, especially in large SFDC environments. For more information, see [http://www.salesforce.com/us/developer/docs/soql_sosl/index_Left.htm Salesforce docs]. === Statement === ''Statement'' refers to the record selection statement in the selected ''Query language''. It may contain application variables in the ''$(varname)'' format. The code and the body of the received HTTP response is stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'', respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed search attempt. For more information, see the description of the variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']]. [[File:Salesforcecom-Search-Settings.png|650px|thumbnail|center|Scenario Builder Saleforce.com Search scenario block settings]]
[[#topic_scenario-builder-reference-guide/salesforce.comscreenpop|< Previous]] | [[#topic_scenario-builder-reference-guide/salesforce.comupdate|Next >]]
= Salesforce.com Select Account= Your contact center configuration may contain multiple Salesforce [[#topic_contact-center-administrator-guide/integrationaccounts|integration accounts]] for access to different Salesforce systems. Use the Salesforce.com Select Account block to specify the integration account that will be used by subsequent Salesforce blocks in the given scenario. If this block is not used, all Salesforce blocks in the given scenario will use access data from the integration account marked as ''Default account''. [[File:Salesforce-Select-Account.png|225px|Salesforce.com Select Account scenario block]] == Settings == [[File:Salesforce-Select-Account-Settings.png|550px|thumbnail|center|Salesforce.com Select Account scenario block settings]] === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Account === ''Account'' is the name of the Salesforce integration account that will be used for access to Salesforce data by subsequent Salesforce blocks in the given scenario.
[[#topic_scenario-builder-reference-guide/rightnowsearch|< Previous]] | [[#topic_scenario-builder-reference-guide/rightnowupdate|Next >]]
= Salesforce.com Update= The Salesforce.com Update scenario block is the part of [http://www.brightpattern.com/call-center-software/salesforce-integration/ Salesforce.com Integration with Bright Pattern Contact Center]. This block updates properties of the specified Salesforce.com (SFDC) object. Note that to populate the custom fields in SFDC activity history records, the [[#topic_scenario-builder-reference-guide/attacheddata|Attached Data]] block must be used. [[File:Salesforcecom-Update-Block.png|225px|Scenario Builder Saleforce.com Update scenario block]] == Conditional Exits == The Salesforce.com Update block may take one of the following conditional exits: Failed or No Data. === Failed === The ''Failed'' conditional exit is executed if the update operation failed. === No Data === The ''No Data'' conditional exit is executed if the specified object is not found. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Object type name === ''Object type name'' is the type of Salesforce.com (SFDC) object to be created as defined in the SFDC system. It may be specified as an application variable in the ''$(varname)'' format. === Object ID === ''Object ID'' is the identifier of the SFDC object to be updated. It may be specified as an application variable in the ''$(varname)'' format. === Fields to update === ''Fields to update'' are the object properties to be updated. Click '''add''' and specify the property '''Name''' as defined in the SFDC system. Then specify the desired new ''Value''. If necessary, repeat for the other object properties to be updated. Field values may be specified as application variables in the ''$(varname)'' format. The code and the body of the received HTTP response is stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'', respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed attempt to update an object. For more information, see the description of the variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']]. [[File:Salesforcecom-Update-Block-Settings.png|450px|thumbnail|center|Scenario Builder Saleforce.com Update scenario block settings]]
[[#topic_scenario-builder-reference-guide/salesforce.comsearch|< Previous]] | [[#topic_scenario-builder-reference-guide/savesurveyresponse|Next >]]
= Save Survey Response= Bright Pattern Contact Center provides post-interaction surveys to collect first-hand information from customers, which can help supervisors and teams assess agent performance and customer satisfaction. Surveys allow for up to five questions for customers to answer, with complete reporting on that data. The ''Save Survey Response'' scenario block saves the customer survey response data for a completed interaction for reporting purposes. [[File:Save-Survey-Response-Block.png|225px|Scenario Builder Save Survey Response scenario block]] The block assumes that the data received are responses to variations of the following survey questions: # Was your issue resolved on your first contact with us? # On a scale from one to nine, how would you rate your overall satisfaction with our service? # On a scale from one to nine, how likely are you to recommend our product to your friend/colleague? The Customer Survey [[#topic_contact-center-administrator-guide/scenariosoverview|scenario template]] provides an example of how to use the Save Survey Response block in an interactive voice response-based (IVR-based) survey. The collected survey data is saved in your contact center's historical reports in order to provide insights on Net Promoter Score (NPS), First Call Resolution (FCR), and more. The aggregated survey data are written in the following tables of the Reporting Database: [[#topic_reporting-database-specification/service_in_time_counters|service_in_time_counters]], [[#topic_reporting-database-specification/agent_performance|agent_performance]], and [[#topic_reporting-database-specification/surveys|surveys]]. Aggregated survey data appear in the following stock reports: * [[#topic_reporting-reference-guide/agentperformancereport|Agent Performance]] * [[#topic_reporting-reference-guide/intra-teambyservicereport|Intra-Team by Service]] * [[#topic_reporting-reference-guide/intra-teamperformancereport|Intra-Team Performance]] * [[#topic_reporting-reference-guide/teamoperationqualityreport|Team Operation Quality]] * [[#topic_reporting-reference-guide/teamperformancereport|Team Performance]] * [[#topic_reporting-reference-guide/servicemetricsreport|Service Metrics]] == Settings == [[File:Scenario-Builder-Save-Survey-Response-52.PNG|600px|thumbnail|center|Scenario Builder Save Survey Response scenario block settings]] === Issue was resolved === The ''Issue was resolved'' response is stored in the ''$(first_call)'' variable, as is required for reporting purposes. The allowed value is 0 or 1 (integer value only). === Contact satisfaction === The ''Contact satisfaction'' response is stored in the ''$(contact_satisfaction)'' variable, as is required for reporting purposes. The allowed range is from -2147483648 to 2147483647. === Net Promoter Score data === The ''Net Promoter Score data'' response is stored in the ''$(NPS_raw)'' variable, as is required for reporting purposes. The integer number range is from 0 to 10. === Conversation or recording text transcript === ''Conversation or recording text transcript'' is an additional field for storing custom survey information related to conversations or recorded text transcripts. For example, variables from the [[scenario-builder-reference-guide/Record#Name_of_the_variable_to_store_text_transcript_of_the_recording|Record]] block may be entered here (e.g., "$(transcript_survey)"). === Conversation or recording sentiment === ''Conversation or recording sentiment'' is an additional field for storing custom survey information related to conversations or recorded sentiments. For example, variables from the [[scenario-builder-reference-guide/Record#Name_of_the_variable_to_store_sentiment_of_recording|Record]] block may be entered here (e.g., "$(sentiment_survey)"). === Additional (custom) fields === ''Additional (custom) fields'' are any configured [[#topic_contact-center-administrator-guide/customsurveyfields|Custom Survey Fields]]; the maximum number of custom survey fields is nine. If no custom survey fields have been configured, this area of the block will be empty. [[File:Scenario-Builder-Save-Survey-Response-Custom-Survey-Fields-52.PNG|650px|thumb|center|Examples of custom survey fields]] = Search Directory= The Search Directory scenario block checks the phone numbers of the [[#topic_contact-center-administrator-guide/staticentries|configured static entries]] to see if any of them matches the specified number. If a match is found, the block updates the specified variable with the name of the static entry. This block can be used, for example, to substitute the caller ID number of an incoming call with the contact name, when the call is delivered to a user’s Agent Desktop. [[File:Search-Directory-Block.png|225px|Scenario Builder Search Directory scenario block]] === Conditional Exits === The Search Directory block may take the '''Not Found''' conditional exit if the supplied number does not match any directory entries. [[File:Search-Directory-Not-Found.png|300px|thumbnail|center|Scenario Builder Search Directory conditional exit]] == Settings == === Number to search === ''Number to search'' is the number to look up or the name of the variable that holds the number (e.g., ''$(item.from)''). === Variable to save name to === This parameter represents the name of the variable to update with the name of the matching static entry (e.g., ''$(item.fullName)''). [[File:Search-Directory-Block-Settings.png|450px|thumbnail|center|Scenario Builder Search Directory scenario block settings]]
[[#topic_scenario-builder-reference-guide/self-serviceprovided|< Previous]] | [[#topic_scenario-builder-reference-guide/sendmessage|Next >]]
= Self-Service Provided= The Self-Service Provided scenario block tells reporting that a self-service function was used by the caller during the call. Placing this block in the scenario marks the interaction as successfully served by the interactive voice response (IVR) portion of the voice scenario or automated forms of the chat scenario. The Self-Service indicator is stored in the call detailed records and can be used in reports to distinguish the calls successfully that were served by an IVR from the calls that were simply abandoned by callers at that stage of processing. [[File:Self-Service-Provided-Block.png|450px|thumbnail|center|Scenario Builder Self-Service Provided scenario block]]
[[#topic_scenario-builder-reference-guide/savesurveyresponse|< Previous]] | [[#topic_scenario-builder-reference-guide/searchdirectory|Next >]]
= Send Message+ = The Send Message+ scenario block is used to send messages to customers. Note that the types of messages you can send changes depending on whether you are creating a voice or chat scenario. [[File:Send-Message-Plus-53.PNG|225px|Scenario Builder Send Message+ scenario block]] == Chat Scenarios == === Conditional Exit === The Send Message+ block for chat scenarios may take the following conditional exit. ==== Timeout ==== The Send Message+ block in chat scenarios may take the ''Timeout'' conditional exit. A Timeout occurs when the amount of time configured in [[#Timeout_after,_sec|Timeout after, sec]] has been exceeded due to no input text being received. [[File:Send-Message-Plus-Chat-53.PNG|300px|thumbnail|center|Send Message+ conditional exit for chat]] === Settings === ==== Media type ==== When used in a chat scenario, the Send Message+ block can be used to send either a chat or an SMS message. For the ''Media type'' setting, select either CHAT or SMS. ==== Message ==== ''Message'' is the text of the message to be sent to the customer. Variables in the ''$(varname)'' format can be used in the message text. ==== Send to this number ==== If sending an SMS message, specify the number to which the text message will be sent. Variables in the ''$(varname)'' format can be used. Note that in order for this option to work in voice scenarios, an [[Contact-center-administrator-guide/Messaging#SMS.2FMMS_access_numbers|SMS/MMS access number]] should be configured in your [[#topic_contact-center-administrator-guide/messaging|Messaging/Chat]] entry. [[File:Send-Message-Plus-Chat-Settings-1-53.PNG|650px|thumbnail|center|Send Message+ settings for chat]] == Voice Scenarios == === Conditional Exit === The Send Message+ block for voice scenarios may take the following conditional exit. ==== Send error ==== The ''Send error'' conditional exit if the attempt to send a text message returned an error. [[File:Send-Message-Plus-Voice-Conditional-Exit-53.PNG|300px|thumbnail|center|Send Message+ conditional exits for voice]] === Settings === The Send Message+ block for voice scenarios sends text messages (i.e., SMS) only. ==== Message ==== ''Message'' is the text of the SMS to be sent to the customer. Variables in the ''$(varname)'' format can be used in the message text. ==== Send to this number ==== When sending an SMS message, specify the number to which the text message will be sent. Variables in the ''$(varname)'' format can be used. Note that in order for this option to work in voice scenarios, an [[Contact-center-administrator-guide/Messaging#SMS.2FMMS_access_numbers|SMS/MMS access number]] should be configured in your [[#topic_contact-center-administrator-guide/messaging|Messaging/Chat]] entry. [[File:Send-Message-Plus-Voice-Settings-1-53.PNG|650px|thumbnail|center|Send Message+ settings for voice]] = ServiceNow Create Object= The ServiceNow Create Object scenario block creates a specified object in the ServiceNow database. Note that to populate the custom fields in ServiceNow activity history records, the [[#topic_scenario-builder-reference-guide/attacheddata|Attached Data]] block must be used. [[File:ServiceNow-Create-Object-316.png|225px|Scenario Builder ServiceNow Create Object scenario block]] == Conditional Exits == The ServiceNow Create Object block may take the ''Failed'' conditional exit if the create operation has failed. == Settings == [[File:ServiceNow-Create-Object-2.png|450px|thumbnail|center|ServiceNow Create Object block properties]] === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Object type === ''Object type'' is the type of ServiceNow object to be created. You can either select one of the standard objects from the drop-down menu, or you can enter the name of the desired custom object type. === Variable name of object ID === This is the name of the variable that will be used as identifier for the ServiceNow object to be created. The variable name of object ID will be set only if the block succeeds. === Set fields === This setting is reserved. === Raw JSON === Clicking ''Raw JSON'' enables object properties to be specified in JSON format. The code and the body of the received HTTP response will be stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'', respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed attempt to create an object. For more information, see the description of variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']].
[[#topic_scenario-builder-reference-guide/sendmessage|< Previous]] | [[#topic_scenario-builder-reference-guide/servicenowscreenpop|Next >]]
= ServiceNow Screen Pop= The ServiceNow Screen Pop scenario block specifies ServiceNow data to be displayed for the agent when the interaction is connected to this agent through the [[#topic_scenario-builder-reference-guide/connectcall|Connect Call]] block. [[File:ServiceNow-ScreenPop-316.png|225px|Scenario Builder RightNow Screen Pop scenario block]] == Settings == [[File:ServiceNow-Screen-Pop.png|450px|thumbnail|center|Scenario Builder RightNow Screen Pop scenario block settings]] === Title text === ''Title text'' is the name of the block instance. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Pop screen upon answer === By default, the screen pop occurs as soon as the interaction is delivered to the agent (i.e., during the alert phase); select this checkbox if you want the screen pop to occur when the agent accepts the interaction for handling. === pop object === Use this option when the scenario can precisely identify the object associated with the interaction using object ID. A ServiceNow page with the object properties will be displayed to the agent. === pop search results === Use this option to run a predefined ServiceNow report for object selection. The results of the report will appear on the agent's screen. Report ID is the identifier of the ServiceNow report to be run for object selection. === cancel screen pop === The available interaction data cannot be used to identify any relevant ServiceNow records. Use the ''cancel screen pop'' option to cancel screen pop of a specific ServiceNow page that may have been set by a previous use of this block in the same scenario. === Object Identifier === ''Object Identifier'' is the identifier of the ServiceNow object to be displayed. It must be specified if the ''Object'' option is selected, and it may be specified as an application variable in the form ''$(varname)''. === Object type === ''Object type'' is the type of the ServiceNow object to be displayed.
[[#topic_scenario-builder-reference-guide/servicenowcreateobject|< Previous]] | [[#topic_scenario-builder-reference-guide/servicenowsearch|Next >]]
= ServiceNow Search= The ServiceNow Search scenario block is used to obtain ServiceNow data. The block executes the specified ServiceNow record selection statement written in the ServiceNow Encoded Query String. [[File:ServiceNow-Search-316.png|225px|Scenario Builder RightNow Search scenario block]] The columns of the first record of the retrieved recordset are stored in variables ''<recordset_name>.<column_name>''. For that statement, the results will be stored in variables ''Recordset.id'' and ''Recordset.name''. The number of returned records is stored in variable ''<recordset_name>.__count__'' (e.g., ''RS.__count__.''). Note the double underscores in front and after count; they are used to reduce the chance of confusing the name of this variable with a column name in a recordset. To iterate through the recordset, use the [[#topic_scenario-builder-reference-guide/getnextrecord|Get Next Record]] block. == Conditional Exits == The ServiceNow Search block may take one of the following conditional exits: Failed or No Data. === Failed === The ''Failed'' conditional exit is executed if the search operation failed. === No data === The ''No data'' conditional exit is executed if no data matching the specified search criteria is found. == Settings == [[File:ServiceNow-Search-2.png|450px|thumbnail|center|Scenario Builder ServiceNow Search scenario block settings]] === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Object type === ''Object type'' is the type of object (e.g., “problem” or “incident”). It is selected from the drop-down menu or entered manually as a custom object. ===Query=== ''Query'' is the record selection statement. It may contain application variables specified as ''$(varname)''. === Recordset name === ''Recordset name'' is the name of the recordset that will be retrieved via this search operation. The recordset name is the same as the value that you entered for ''Variable name of object ID'' in the ServiceNow Create Object block. The code and the body of the received HTTP response is stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'' respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed search attempt. For more information, see the description of the variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']].
[[#topic_scenario-builder-reference-guide/servicenowscreenpop|< Previous]] | [[#topic_scenario-builder-reference-guide/servicenowselectaccount|Next >]]
= ServiceNow Select Account= Your contact center configuration may contain multiple ServiceNow [[#topic_contact-center-administrator-guide/integrationaccounts|integration accounts]] for access to different ServiceNow systems. Use the ServiceNow Select Account block to specify the integration account that will be used by subsequent ServiceNow blocks in the given scenario. If this block is not used, all ServiceNow blocks in the given scenario will use access data from the integration account marked as ''Default account''. [[File:ServiceNow-Select-Account-316.png|225px|Scenario Builder RightNow Select Account scenario block]] == Settings == [[File:ServiceNow-Select-Account.png|650px|thumbnail|center|Scenario Builder ServiceNow Select Account scenario block settings]] === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Account === ''Account'' is the name of the ServiceNow integration account that will be used for access to ServiceNow data by subsequent ServiceNow blocks in the given scenario.
[[#topic_scenario-builder-reference-guide/servicenowsearch|< Previous]] | [[#topic_scenario-builder-reference-guide/servicenowupdateobject|Next >]]
= ServiceNow Update Object= The ServiceNow Update Object scenario block updates the properties of the specified ServiceNow object. Note that to populate the custom fields in ServiceNow activity history records, the [[#topic_scenario-builder-reference-guide/attacheddata|Attached Data]] block must be used. [[File:ServiceNow-Update-Object-316.png|225px|Scenario Builder ServiceNow Object scenario block]] == Conditional Exits == The ServiceNow Update Object block may take one of the following conditional exits: Failed or No data. === Failed === The ''Failed'' conditional exit is executed if the update operation failed. === No data === The ''No data'' conditional exit is executed in the specified object is not found. == Settings == [[File:ServiceNow-Update-Object-2.png|450px|thumbnail|center|Scenario Builder ServiceNow Object scenario block settings]] === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Object Type === ''Object type'' is the type of ServiceNow object to be created. You can either select one of the standard objects from the drop-down menu or enter the name of the desired custom object type. === Object Identifier === ''Object Identifier'' is the identifier of the object to be updated. === Set fields === This setting is reserved. === Raw JSON === ''Raw JSON'' enables object properties to be specified in JSON format. The code and the body of the received HTTP response is stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'' respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed attempt to update an object. For more information, see the description of the variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']].
[[#topic_scenario-builder-reference-guide/rightnowselectaccount|< Previous]] | [[#topic_scenario-builder-reference-guide/salesforce.comdelete|Next >]]
= Set Agent State= The Set Agent State scenario block supports agent authentication via phone (i.e., using extension and PIN) when agents select the ''Dial-in and keep line open'' option as their [[#topic_agent-guide/selectingaphonedevice|phone device option]]. Also known as a ''nailed connection'', this option allows agents to establish a phone connection with the system from any phone and use this established physical connection for handling of subsequent calls within their login sessions. [[File:Set-Agent-State-Block.png|225px|Scenario Builder Set Agent State scenario block]] A scenario that supports authentication via phone will usually begin with a [[#topic_scenario-builder-reference-guide/collectdigits|Collect Digits]] block, which prompts the caller to enter their extension number and PIN and stores them in variables. The Set Agent State block then verifies the supplied extension number and PIN against the user configuration to authenticate the caller. If the agent is successfully authenticated, the block returns the agent's current state and stores it in variable ''$(agentState)''. If the state is ''Not Ready'', the ''Not Ready'' reason will be stored in the variable ''$(notReadyReason)''. To support this process, Bright Pattern provides a scenario template called ''External Agent Dial In''. Note that instead of reporting the agent’s current state, the block can be used to switch the agent to another desired state. == Conditional Exits == The Set Agent State block may take the ''Authentication Failed'' conditional exit if the supplied extension number and PIN combination does not match credentials of any configured user. [[File:Set-Agent-State-Conditional-Exit.png|300px|thumbnail|center|Scenario Builder Set Agent State conditional exit]] == Settings == === Agent’s digital ID (extension) === ''Agent’s digital ID'' is the agent’s extension number or the name of the variable that holds the extension number (e.g., ''$(varPhone)''). === Over the phone agent PIN === ''Over the phone agent PIN'' is the agent’s PIN or the name of the variable that holds the agent’s PIN (e.g., ''$(varPIN)''). === Action === This is the desired action; either get the current agent’s state or set it to one of the listed state. Note that for the agent authentication scenario described, the action must be set to ''GET_STATE''. [[File:Set-Agent-State-Settings.png|650px|thumbnail|center|Scenario Builder Set Agent State scenario block settings]]
[[#topic_scenario-builder-reference-guide/sendmessage|< Previous]] | [[#topic_scenario-builder-reference-guide/setdisposition|Next >]]
= Set Case = The ''Set Case'' block associates a case with the current interaction. When the interaction is delivered to the agent, the Case tab will be automatically displayed on [[#topic_agent-guide/understandingscreen-pop|screen-pop]] forms. [[File:Set-Case-522.PNG|225px|Set Case scenario block]] == Conditional Exits == There are no conditional exits. == Settings == === Title text === ''Title Text'' is the name of the instance of the block. Enter a name in the text field and the new name of the block will appear in the flowchart. === Case ID === This is the record ID for the case to be associated with the interaction. === Replace === When enabled, this checkbox indicates if a new case should be added to the list of cases on the interaction or replace any existing cases on the interaction. [[File:Set-Case-Settings-522.PNG|650px|thumb|center|Set Case block settings]] = Set Custom Reporting Field= The Set Custom Reporting Field scenario block can be used to define custom reporting fields in a scenario. Note it is possible to set custom reporting fields directly from Agent Desktop if the JavaScript API method [[#topic_desktop-javascript-api-specification/setreportingcustomfield|setReportingCustomField]] is enabled. [[File:Set-Custom-Reporting-Field-Block-50.PNG|225px|Set Custom Reporting Field scenario block]] == Settings == [[File:Set-Custom-Reporting-Field-50.PNG|650px|thumbnail|center|Set Custom Reporting Field scenario block settings]] === Field === ''Field'' is the name of the custom reporting field to be used in the scenario. === Value === ''Value'' is the scenario variable that will be copied into the custom reporting field.
[[#topic_scenario-builder-reference-guide/sendmessage|< Previous]] | [[#topic_scenario-builder-reference-guide/setdisposition|Next >]]
= Set Disposition= The Set Disposition scenario block allows scenarios to specify a [[#topic_contact-center-administrator-guide/dispositionstab|disposition]] for the interaction. [[File:Set-Disposition-Block.png|225px|Scenario Builder Set Disposition scenario block]] == Settings == '''Set Disposition''' ''Set Disposition'' is the disposition name or the associated numeric code. If the disposition with the specified name or numeric code cannot be found, the interaction disposition will be set to ''Disposition Not Found''. [[File:Set-Disposition-Block-Settings.png|750px|thumbnail|center|Scenario Builder Set Disposition scenario block settings]]
[[#topic_scenario-builder-reference-guide/setagentstate|< Previous]] | [[#topic_scenario-builder-reference-guide/setpriority|Next >]]
= Set Priority= The Set Priority scenario block specifies the priority of the given interaction relative to other interactions competing for the same resources. [[File:Set-Priority-Block.png|225px|Scenario Builder Set Priority scenario block]] Several examples how priorities are determined are given. ::'''Example 1:''' Calls from platinum-level customers may be given a higher priority relative to other calls requesting the same service to minimize the wait time for high-value interactions. ::'''Example 2:''' Calls internally transferred to a service may be given a higher priority relative to the directly arriving calls to minimize the wait time for customers who have previously waited in a queue. ::'''Example 3:''' Some of your agents are qualified to provide both sales and customer service. You can assign a higher priority to sales calls. This priority will be taken into account every time an agent that possess both sales and customer service skills becomes available. Note that if your agents are qualified to provide different services, priority can be used to prioritize calls depending on the service that is requested. '''Interaction priorities''' The value range for priority setting is from 1 to 100. The instantaneous priority of an interaction is calculated as a function of its set priority and the time that the interaction has spent in the service queue. * '''0.5''': Specify 0.5 to make the interaction move through the queue at half the speed of interactions with priority 1. * '''1''': The default interaction priority is 1. * '''2''': Specify 2 to double the speed with which the given interaction will move through the queue relative to interactions with priority 1. Priority set by this block supersedes the priority that may be preconfigured at the [[#topic_contact-center-administrator-guide/dial-in|scenario entry]] level. == Settings == The Set Priority block has just one setting, ''Priority'', which is where you enter the value of the priority relative to other interactions in queue. [[File:Set-Priority-Block-Settings.png|450px|thumbnail|center|Scenario Builder Set Priority scenario block settings]]
[[#topic_scenario-builder-reference-guide/setdisposition|< Previous]] | [[#topic_scenario-builder-reference-guide/setpromptlanguage|Next >]]
= Set Prompt Language= The Set Prompt Language scenario block determines the language in which the blocks following this block will play their prompts. This block is typically used in the conditional exits of the [[#topic_scenario-builder-reference-guide/menu|Menu]] block that offers a choice of languages to the caller. This block can also be used to determine the language in which the [[#topic_scenario-builder-reference-guide/record|Record]] block will record shared voice segments. [[File:Set-Prompt-Language-Block.png|225px|Scenario Builder Set Prompt Language scenario block]] Note that each application you develop has built-in multilingual prompt management. You can add or remove languages using the Prompt Manager. Each prompt has versions for all languages defined in the system. By default, English is always defined. The block has a drop-down list containing all languages defined for your scenario. You can enable additional languages for the scenario in the ''Prompt List'' dialog box. To configure the block, select the language in the drop-down list. The label of the Set Prompt Language block changes in the flowchart will display ''Set Prompt Language “[language]”.'' Once the Set Prompt Language block sets the language, each subsequent block will play (or record) prompts in that language until another Set Prompt Language block changes the language. [[File:Set-Prompt-Language.png|800px|thumbnail|center|Setting the Prompt language]]
[[#topic_scenario-builder-reference-guide/setpriority|< Previous]] | [[#topic_scenario-builder-reference-guide/setvariable|Next >]]
= Set Variable= This block sets a value for a scenario variable. Note it is possible to push variables directly to scenarios and [[#topic_contact-center-administrator-guide/workflowentries|workflows]] if the JavaScript API method [[#topic_desktop-javascript-api-specification/postvariable|postVariable]] is enabled. [[File:Set-Variable-Block.png|225px|Set Variable block]] == Settings == === Variable name === This is the name of the variable. The ''Variable name'' can be set to be anything you like. === Value === The ''Value'' is the desired variable value. In the example image shown, the value is $(targetDisconnectedCause), which is being used as a conditional exit in the scenario. [[#topic_scenario-builder-reference-guide/variables|Variables]] in the ''$(varname)'' format can be used as values. Values can be specified as either expressions or literal [[#topic_scenario-builder-reference-guide/stringexpressions|strings]]. Literal strings are passed exactly as entered. [[#topic_scenario-builder-reference-guide/integerexpressions|Expressions]] must begin with assignment sign ''='' as the first character. For example, ''2+2'' will produce ''2+2'', whereas ''=2+2'' will produce ''4''. The expression result produces one of the following data types: [[#topic_scenario-builder-reference-guide/stringexpressions|strings]], [[#topic_scenario-builder-reference-guide/integerexpressions|integers]], and [[#topic_scenario-builder-reference-guide/floatingpointexpressions|floating point numbers]]. [[File:Editing-Set-Variable-Settings.png|650px|center|Editing the Set Variable settings]] = Start Another Scenario= The Start Another Scenario block starts the specified scenario from within the given (parent) scenario. Variables defined in the parent scenario carry over to the sub scenario. After the sub scenario finishes executing, control returns to the parent scenario (except when terminated by error or disconnect). The parent scenario will resume by executing the next block in the flowchart. [[File:Start-Another-Scenario.png|225px|Scenario Builder Start Another Scenario block]] To configure the block, select the desired sub scenario in the drop-down list. The label of the block in the flowchart will display ''Start Another Scenario “[scenario name]”.'' In the scenario shown, you can see that the Start Another Scenario block is used if the call is disconnected. [[File:Start-Another-Scenario-Settings.png|800px|thumbnail|center|Scenario Builder Start Another Scenario block settings]]
[[#topic_scenario-builder-reference-guide/setvariable|< Previous]] | [[#topic_scenario-builder-reference-guide/stopprompt|Next >]]
= Stop Prompt= The Stop Prompt scenario block stops the playback of a continuous prompt if such playback was previously enabled by executing the [[#topic_scenario-builder-reference-guide/playprompt|Play Prompt]] block with option ''Exit immediately and continue playing prompt in background''. [[File:Stop-Prompt.png|225px|Scenario Builder Stop Prompt scenario block]]
[[#topic_scenario-builder-reference-guide/startanotherscenario|< Previous]] | [[#topic_scenario-builder-reference-guide/voicemail|Next >]]
= Voicemail= The Voicemail scenario block records a voicemail message of a specified maximum duration, stores it in the system (optionally encrypted), and sends an email notification to the message recipient. Depending on the settings, the email may either contain an access link or the message itself attached as an audio file. If the email contains the link, the recipient may have to log into the system before the message can be played back to the recipient. For more information, see the Bright Pattern Contact Center ''Agent Guide'', section [[#topic_agent-guide/listeningtovoicemailmessages|Listening to Voicemail Messages]]. [[File:Voicemail-Block.png|225px|Scenario Builder Voicemail scenario block]] '''Note:''' The system provides a [[#topic_contact-center-administrator-guide/voicemail|built-in (default) voicemail function]]. Use the Voicemail block only if you need voicemail capabilities that the generic built-in voicemail function does not support (e.g., different content of the email notification depending on the type of call). Voicemail messages are stored in the system for the same period of time as call recordings. == Conditional Exits == The Voicemail block will take the ''Failed'' conditional exit if a block error occurs. == Settings == [[File:Voicemail-Settings.png|800px|thumbnail|center|Scenario Builder Voicemail scenario block settings]] === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Maximum duration === This setting specifies the maximum length of the voicemail message, in seconds. If this time is exceeded, recording will be stopped and the recorded portion of the message will be stored. If not specified, the recording will stop when either the person leaving the message presses a DTMF key, hangs up, or presses the pound (#) key; or when the default duration of 30 seconds is exceeded. === Recording encoding === ''Recording encoding'' is the encoding method. Select '''G.711''' (default) for the best quality or '''GSM6.10''' for a smaller file. The latter may be essential if you intend to send voicemail recordings as email attachments. === Beep at start of recording === If this setting is selected, the Voicemail block will provide a tone (i.e., beep) indicating the beginning of the recording. === Encrypt recording === If this setting is selected, the recording will be stored encrypted. === Send URL to email === This is the email address of the voice message recipient. A scenario variable can be specified as the value using the ''$(varname)'' format. === From display name === This is the display name of the email sender. A scenario variable can be specified as the value using the ''$(varname)'' format. === From email address === This is the email address of the email sender. A scenario variable can be specified as the value using the ''$(varname)'' format. === Subject === ''Subject'' is the subject line of the email. Can contain scenario variables in the $(varname) format. === Body === ''Body'' is the text to be sent as a message body. If the email notification contains an access link (as opposed to an audio file attachment), the link should consist of your Agent Desktop URL and variable ''$(URL_SUFIX)'' (e.g., ''http://abc-insurance.my-service-provider.com/$(URL_SUFIX)''). === Allow any user to listen === If this setting is selected, any user registered in the system will be able to listen to the voice message upon clicking the URL and logging in. Use this option if message recipients may need to forward some of their voicemail to other users. === Allow only this user === Only the specified user will be able to listen to this message upon clicking the URL and logging in. === Attach voice recording file to email === If this setting is selected, a copy of the voice message will be attached to the email as an audio (''.WAV'') file. The attachment will be unencrypted even if the ''Encrypt recording'' option is selected.
[[#topic_scenario-builder-reference-guide/stopprompt|< Previous]] | [[#topic_scenario-builder-reference-guide/wait|Next >]]
= Wait= The Wait scenario block will pause scenario execution for a specified number of seconds. [[File:Wait-Scenario-Block.png|225px|Scenario Builder Wait scenario block]] == Settings == The ''Wait duration'' setting is where you specify the number of seconds for which any scenario execution should be paused. Decimal fractions are allowed. In the scenario shown, the wait duration is set for 2 seconds, which gives the system 2 seconds to wait before answering the call. [[File:Wait-Block.png|800px|thumbnail|center|Scenario Builder Wait scenario block]]
[[#topic_scenario-builder-reference-guide/voicemail|< Previous]] | [[#topic_scenario-builder-reference-guide/webscreenpop|Next >]]
= Web Screen Pop= This block specifies what to display for the agent when the interaction is connected to this agent through the [[#topic_scenario-builder-reference-guide/connectcall|Connect Call]] or [[#topic_scenario-builder-reference-guide/connectchat|Connect Chat]] block. [[File:Web-Screen-Pop-in-Scenario.png|450px|center|Web Screen Pop block used in scenario]] Note that services may also have [[#topic_contact-center-administrator-guide/activityforms|activity forms]] associated with them. If an interaction is associated with a service that has a configured activity form, both the activity form and the content specified in this block will appear in the [[#topic_agent-guide/understandingscreen-pop|tabs of the Agent Desktop]]. To specify which content shall appear in the active tab, use option '''Display activity form before/after web screen pop(s)''' of the [[#topic_contact-center-administrator-guide/activitytab|Activity tab]] of the given service. Note also that by default, specified screen pop content will be displayed in the [[#topic_agent-guide/userinterfaceoverview|Context Information Area]] of the Agent Desktop. This area is not shown when Agent Desktop is run minimized using the [[#topic_agent-guide/understandingscreen-pop|Pop-out function]]. Thus, when using web screen pop, consider one of the following options: * Open screen pop in a separate window/tab (see setting '''Open in popup window''') * Disabling agents' [[#topic_contact-center-administrator-guide/privileges|privilege]] '''Force pop-out phone window''' == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Label === The ''Label'' field is where you may enter a separate, customer-facing name for the URL. === Open in popup window === This indicates whether screen pop should appear in the [[#topic_agent-guide/userinterfaceoverview|Context Information Area]] of the Agent Desktop application (default) or in a separate window. === Keep open when interaction is finished === When selected, this option keeps open the pop-out browser tab when the interaction is finished. Note that this option is not available for selection unless ''Open in popup window'' is selected. === Pop screen upon answer === By default, the screen pop occurs as soon as the interaction is delivered to the agent (i.e., during the alert phase); select this checkbox if you want the screen pop to occur when the agent accepts the interaction for handling. === Screenpop action === ''Screenpop action'' indicates whether the pop-up will open a web page (default) or display text. === URL of the page to open === This specifies the URL of the web page that should be opened if the ''Open web page'' screen pop action is selected. A query string can be added to supply variables for the screen pop page (e.g., ''http://www.localhost.com/Webform2.aspx?accountnumber=$(custNum)'') === Text to display === This specifies the text to be displayed if the '''Display text''' screen pop action is selected. === Additional URLs === This can be used to specify URLs of optional additional web pages to be opened if the '''Open web page''' screen pop action is selected. [[File:Webscreen-Pop-block-3-17-1.PNG|550px|center|Web Screen Pop scenario block settings]]
[[#topic_scenario-builder-reference-guide/wait|< Previous]] | [[#topic_scenario-builder-reference-guide/zendeskcreateobject|Next >]]
= Zendesk Create Object= The Zendesk Create Object scenario block creates a specified object in the Zendesk database. Objects that can be created are tickets and users. For more information, see the following articles on [https://developer.zendesk.com/rest_api/docs/core/tickets#creating-tickets creating tickets] and [https://developer.zendesk.com/rest_api/docs/core/users#create-user creating users]. Note that to populate the custom fields in Zendesk activity history records, the [[#topic_scenario-builder-reference-guide/attacheddata|Attached Data]] block must be used. [[File:Zendesk-Create-Object-Block.png|225px|Scenario Builder Zendesk Create Object scenario block]] == Conditional Exits == The Zendesk Create Object block will take the '''Failed''' conditional exit if the create operation has failed. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Object type === ''Object type'' is the type of the Zendesk object to be created. An object can be either a ticket or a user. === Variable name of object ID === This is the name of the variable that will be used as an identifier for the Zendesk object to be created. The variable name of object ID will be set only if the Zendesk Create Object block succeeds. === Set fields === This setting is reserved. === Raw JSON === ''Raw JSON'' is where object properties are specified in JSON format. The code and the body of the received HTTP response will be stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'', respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain the content of responses indicating a failed attempt to create an object. For more information, see the description of the variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']]. [[File:Zendesk-Create-Object-Block-Settings.png|350px|thumbnail|center|Scenario Builder Zendesk Create Object scenario block settings]]
[[#topic_scenario-builder-reference-guide/webscreenpop|< Previous]] | [[#topic_scenario-builder-reference-guide/zendeskscreenpop|Next >]]
= Zendesk Screen Pop= The Zendesk Screen Pop scenario block specifies Zendesk data to be displayed for the agent when the interaction is connected to this agent through the [[#topic_scenario-builder-reference-guide/connectcall|Connect Call]] or [[#topic_scenario-builder-reference-guide/connectchat|Connect Chat]] block. [[File:Zendesk-Screen-Pop-Block.png|225px]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Pop screen upon answer === By default, the screen pop occurs as soon as the interaction is delivered to the agent (i.e., during the alert phase); select this checkbox if you want the screen pop to occur when the agent accepts the interaction for handling. === Object === Use this option when the scenario can precisely identify the object associated with the interaction. A Zendesk page with the object properties will be displayed to the agent. === Object ID === ''Object ID'' is the identifier of the Zendesk object to be displayed. It must be specified if the '''Object''' option is selected. It may be specified as an application variable in the ''$(varname)'' format. === Object type === This is the type of the Zendesk object to be displayed. It can be either a ticket or a user. === Nothing === The available interaction data cannot be used to identify any relevant Zendesk records. Use the ''Nothing'' option to cancel screen pop of a specific Zendesk page that may have been set by a previous use of this block in the same scenario. [[File:Zendesk-Screen-Pop-Settings.png|350px|center|Zendesk Screen Pop scenario block settings]] = Web Screen Pop Block with Zendesk Integration = The scenario engine enables both web screen pop and CRM screen pop (i.e., Zendesk Screen Pop) by using subsequent blocks in a scenario. The scenario engine controls such screen pop configuration and sends information about all enabled screen pops to the Agent Desktop application. '''Step 1: Place screen pop blocks on your scenario.''' * In the Bright Pattern Contact Center Scenario Builder, drag a '''Web Screen Pop''' scenario block onto the scenario. * Drag a '''Zendesk Screen Pop''' scenario block onto the scenario, beneath the '''Web Screen Pop''' block. [[File:Web-CRM-Screen-Pop-Blocks.png|450px|center|Web screen pop and Zendesk screen pop blocks placed together in scenario]] '''Step 2: Configure settings for each screen pop block.''' In order for screen pop to work, you must specify the settings for each block. '''[[#topic_scenario-builder-reference-guide/webscreenpop|Web Screen Pop]]''' settings include '''Title text''', '''Screenpop action''', the '''URL of the page to open''', and '''Additional URLs''' (if any). Checking the boxes determines whether screen pops open in a pop-up window and if screen pop is enabled when an interaction is answered. [[File:Web-Screen-Pop-Settings.png|550px|center|Configure settings for Web screen pop]] Agents accepting interactions in the Agent Desktop application should now receive any enabled screen pops on the desktop interface. For more information on screen pop, refer to the ''[[#topic_agent-guide/understandingscreen-pop|Agent Guide]]''.
[[#topic_scenario-builder-reference-guide/zendeskcreateobject|< Previous]] | [[#topic_scenario-builder-reference-guide/zendesksearch|Next >]]
= Zendesk Search= The Zendesk Search scenario block executes the specified Zendesk record selection statement. (For more information, refer to Zendesk's [https://developer.zendesk.com/rest_api/docs/core/search Search API] and [https://support.zendesk.com/hc/en-us/articles/203663226 Zendesk Support search reference] articles.) [[File:Zendesk-Search-Scenario-Block.png|225px|Scenario Builder Zendesk Search scenario block]] The columns of the first record of the retrieved recordset are stored in the variables ''<recordset_name>.<column_name>''. For that statement, the results will be stored in the variables ''Recorset.id'' and ''Recordset.name''. The number of returned records is stored in the variable ''<recordset_name>.__count__'' (e.g., ''RS.__count__''). (Note the double underscores in front and after count; they are used to reduce the chance of confusing the name of this variable with a column name in a recordset.) To iterate through the recordset, use the [[#topic_scenario-builder-reference-guide/getnextrecord|Get Next Record]] block. == Conditional Exits == The Zendesk Search block may take one of the following conditional exits: Failed or No Data. === Failed === The Zendesk Search block will execute the Failed conditional exit if the search operation failed. === No Data === The No Data conditional exit is executed if no data matching the specified search criteria is found. [[File:Zendesk-Search-Scenario-Exits.png|300px|thumbnail|center|Scenario Builder Zendesk Search conditional exits]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the Update button at the bottom of the Edit pane. The new name of the block appears in the flowchart. === Recordset name === ''Recordset'' is the name of the recordset that will be retrieved via this search operation. === Max results === ''Max results'' is the maximum number of records in the recordset. === Search string === ''Search string'' is the record selection statement, and it may contain application variables specified in the ''$(varname)'' format. The code and the body of the received HTTP response is stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'', respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain content of responses indicating a failed search attempt. For more information, see the description of the variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']]. [[File:Zendesk-Search-Settings.png|450px|thumbnail|center|Scenario Builder Zendesk Search scenario block settings]]
[[#topic_scenario-builder-reference-guide/zendeskscreenpop|< Previous]] | [[#topic_scenario-builder-reference-guide/zendeskselectaccount|Next >]]
= Zendesk Select Account= Your contact center configuration may contain multiple Zendesk [[#topic_contact-center-administrator-guide/integrationaccounts|integration accounts]] for access to different Zendesk systems. Use the Zendesk Select Account scenario block to specify the integration account that will be used by subsequent Zendesk blocks in the given scenario. If this block is not used, all Zendesk blocks in the given scenario will use access data from the integration account marked as ''Default account''. [[File:Zendesk-Select-Account-Block.png|225px|Scenario Builder Zendesk Select Account scenario block]] == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Account === ''Account'' is the name of the [http://www.brightpattern.com/zendesk-integrations/ Zendesk integration] account through which Zendesk data will be accessed by subsequent Zendesk blocks in the given scenario. [[File:Zendesk-Select-Account-Block-Settings.png|450px|thumbnail|center|Scenario Builder Zendesk Select Account scenario block settings]]
[[#topic_scenario-builder-reference-guide/zendesksearch|< Previous]] | [[#topic_scenario-builder-reference-guide/zendeskupdate|Next >]]
= Zendesk Update Object = The Zendesk Update Object scenario block updates the properties of the specified Zendesk object. Objects that can be updated are tickets and users. (For more information, refer to Zendesk's articles on [https://developer.zendesk.com/rest_api/docs/core/tickets#updating-tickets updating tickets] and [https://developer.zendesk.com/rest_api/docs/core/users#update-user updating users].) Note that to populate the custom fields in Zendesk activity history records, the [[#topic_scenario-builder-reference-guide/attacheddata|Attached Data]] block must be used. [[File:Zendesk-Update-Object.png|225px|Scenario Builder Zendesk Update Object scenario block]] == Conditional Exits == The Zendesk Update Object block may take one of the following conditional exits: Failed or No Data. === Failed === The ''Failed'' conditional exit is executed if the update operation failed. === No Data === The ''No Data'' conditional exit is executed if the specified object is not found. == Settings == === Title text === ''Title text'' is the name of the instance of the block. Enter a name in the text field and click the '''Update''' button at the bottom of the ''Edit'' pane. The new name of the block appears in the flowchart. === Object type === ''Object type'' is the type of Zendesk object to be created. The object can be either a ticket or a user. === Object ID === ''Object ID'' is the identifier of the object to be updated. === Set fields === This setting is reserved. === Raw JSON === ''Raw JSON'' is where the object properties to be updated are specified in JSON format. The code and the body of the received HTTP response is stored in local variables ''$(integrationResultCode)'' and ''$(integrationResultBody)'', respectively. For troubleshooting purposes, use the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to obtain the content of the responses indicating a failed attempt to update an object. For more information, refer to the description of the variable [[#topic_scenario-builder-reference-guide/variables|''$(integrationResultBody)'']]. [[File:Zendesk-Update-Object-Settings.png|400px|thumbnail|center|Scenario Builder Zendesk Update Object scenario block settings]]
[[#topic_scenario-builder-reference-guide/zendeskselectaccount|< Previous]] | [[#topic_scenario-builder-reference-guide/variables|Next >]]
= Variables= This section describes the variables that are used in Bright Pattern Contact Center scenarios and [[#topic_contact-center-administrator-guide/variables|workflows]]. Variables are accessed using the common ''$(varname)'' format. They can be used in [[#topic_scenario-builder-reference-guide/integerexpressions|integer]] and [[#topic_scenario-builder-reference-guide/stringexpressions|string]] expressions. Most of the scenario variables are local (i.e., their values are available to the scenario where they are defined and to the sub-scenarios that are started from that parent scenario using the [[#topic_scenario-builder-reference-guide/startanotherscenario|Start Another Scenario]] block). Variable ''$(item.customerPhone)'', as well as all variables in the General or Local category of scenarios launched for consult calls and blind transfers, inherit values of the same variables of the associated primary calls. To share data between independent scenarios, consider using blocks [[#topic_scenario-builder-reference-guide/fetchurl|Fetch URL]] or [[#topic_scenario-builder-reference-guide/dbexecute|DB Execute]] to store variable values in a persistent storage and to access them from other scenarios. == Local Variables == === $(destination) === ''$(destination)'' specifies the destination for the [[#topic_scenario-builder-reference-guide/connectcall|Connect Call]] or [[#topic_scenario-builder-reference-guide/connectchat|Connect Chat]] block. === $(___sip_response_code___) === ''$(___sip_response_code___)'' is an optional variable that specifies the SIP response code sent on an unanswered inbound call. The default is 480. It works only if the scenario has [[#topic_scenario-builder-reference-guide/accept|Accept]] or [[#topic_scenario-builder-reference-guide/answer|Answer]] blocks and the scenario finishes before the Answer block. === $(fetchURLResultBody) === ''$(fetchURLResultBody)'' specifies the body of HTTP response received by the most recent [[#topic_scenario-builder-reference-guide/fetchurl|Fetch URL]] block. Note that the block will report the same value via the ''$(integrationResultBody)'' variable. === $(fetchURLResultCode) === ''$(fetchURLResultCode)'' specifies the code of HTTP response received by the most recent [[#topic_scenario-builder-reference-guide/fetchurl|Fetch URL]] block. Note that the block will report the same value via the ''$(integrationResultCode)'' variable.. === $(integrationResultBody) === ''$(integrationResultBody)'' specifies the body of HTTP response received by the most recent of these integration blocks: * [[#topic_scenario-builder-reference-guide/rightnowcreateobject|RightNow Create Object]] * [[#topic_scenario-builder-reference-guide/rightnowsearch|RightNow Search]] * [[#topic_scenario-builder-reference-guide/rightnowupdate|RightNow Update]] * [[#topic_scenario-builder-reference-guide/salesforce.comdelete|Salesforce.com Delete]] * [[#topic_scenario-builder-reference-guide/salesforce.cominsert|Salesforce.com Insert]] * [[#topic_scenario-builder-reference-guide/salesforce.comsearch|Salesforce.com Search]] * [[#topic_scenario-builder-reference-guide/salesforce.comupdate|Salesforce.com Update]] * [[#topic_scenario-builder-reference-guide/zendeskcreateobject|Zendesk Create Object]] * [[#topic_scenario-builder-reference-guide/zendesksearch|Zendesk Search]] * [[#topic_scenario-builder-reference-guide/zendeskupdate|Zendesk Update]] * [[#topic_scenario-builder-reference-guide/fetchurl|Fetch URL]] To understand why an attempt to look up or update data in a third-party application may have failed, consider using this variable and the corresponding ''$(integrationResultCode)'' after each integration block in the following manner: * Use the [[#topic_scenario-builder-reference-guide/if|If]] block to separate failed attempts from successful ones (e.g., ''If scenario variable (number) $(integrationResultCode) is not = 200''). (The exact expression will depend on the messages returned by the third-party application, their codes, and the types of messages you expect to be notified about.) * For failed attempts, use either the [[#topic_scenario-builder-reference-guide/email|EMail]] or [[#topic_scenario-builder-reference-guide/internalmessage|Internal Message]] block to submit content of both these variables to concerned personnel. === $(integrationResultCode) === ''$(integrationResultCode)'' specifies the code of HTTP response received by the most recent of the integration blocks. For more information, see the description of the ''$(integrationResultBody)'' variable. === $(agentState) === ''$(agentState)'' specifies the state of the agent obtained by the most recent [[#topic_scenario-builder-reference-guide/setagentstate|Set Agent State]] block. === $(notReadyReason) === ''$(notReadyReason)'' specifies the ''Not Ready'' reason of the agent obtained by the most recent [[#topic_scenario-builder-reference-guide/setagentstate|Set Agent State]] block. === $(targetDisconnectedCause) === In the event of agent connection loss during a chat with a customer, the ''$(targetDisconnectedCause)'' variable informs the chat scenario of the cause of the agent's disconnection in the ''Target Disconnected'' branch of [[#topic_scenario-builder-reference-guide/connectchat|Connect Chat]] block. Possible causes could be one of the following: "UserHangup," "SystemHangup," "UserLogout," or "Failure." === $(doNotRecord) === ''$(doNotRecord)'' can be set to '''1''' or '''true''' (case insensitive) prior to [[#topic_scenario-builder-reference-guide/connectcall|Connect Call]] block to disable voice recording. This overrides all recording settings in configuration. Recording can still be enabled manually via Agent Desktop or via desktop API methods. See also [[Scenario-builder-reference-guide/Variables#.24.28banVoiceRecording.29 | $(banVoiceRecording)]]. === $(banVoiceRecording) === The ''$(banVoiceRecording)'' variable can be set to '''1''' or '''true''' (case insensitive) to ban voice recording for the entire call. This overrides all recording settings in configuration. It will also block any any attempts to enable recording manually via Agent Desktop or via desktop API methods. See also [[Scenario-builder-reference-guide/Variables#.24.28banVoiceRecording.29 | $(doNotRecord)]]. === $(banMonitoring) === The ''$(banMonitoring)'' variable can be set to "1" or "true" (case insensitive) to ban call monitoring by a supervisor. === $(ttsVoice) === ''$(ttsVoice)'' can be set to specify the TTS voice to be used by the scenario. === $(botContext) === The ''$(botContext)'' variable is part of the sentiment analysis context. === $(XXX) === ''$(XXX)'' is a custom (user-defined) variable. Substitute ''XXX'' with a meaningful variable name (e.g., ''$(accountNumber)''). Custom variables are used to pass custom data between blocks of the same scenario and to transfer such data from scenarios of primary customer calls to the associated dependent calls (consultations and blind transfers). Scenarios launched for consult calls and blind transfers will recreate all custom variables defined in scenarios of the associated primary calls and will inherit their values. == Screenpop Data == === $(screenpopData.XXX) === ''$(screenpopData.XXX)'' specifies the list of the screen pop data received or set by interactive voice response (IVR). An actual list of available screen pop data elements depends on the particular IVR and integration. == Media Item (Call, Chat) Properties == === $(item.globalInteractionId) === ''$(item.globalInteractionId)'' specifies the [[#topic_reporting-reference-guide/globalinteractionidentifier|Global interaction identifier]]. === $(item.interactionId) === ''$(item.interactionId)'' specifies the interaction identifier. This parameter is maintained for backward compatibility. Starting with Bright Pattern Contact Center version 3.11, the ''$(item.globalInteractionId)'' variable is recommended for use in any operations involving [[#topic_reporting-reference-guide/globalinteractionidentifier|interaction identification]]. === $(item.interactionStepId) === ''$(item.interactionStepId)'' specifies the interactions step identifier. This variable can be used to obtain recordings and the related metadata via the [[#topic_recording-retrieval-api-specification/about| Recording Retrieval API]]. For any other operations involving [[#topic_reporting-reference-guide/globalinteractionidentifier|interaction identification]], the ''$(item.globalInteractionId)'' variable should be used. === $(item.media) === ''$(item.media)'' specifies the media type. This variable can be set to ''voice'' or ''chat.'' === $(item.from) === ''$(item.from)'' specifies the origination address (i.e., phone number or chat user display name). This variable is also known as ''ANI''. === $(item.to) === ''$(item.to)'' specifies the destination address (i.e., dialed phone number or chat launch point name). This variable is also known as ''DNIS.'' === $(item.priorTo) === ''$(item.priorTo)'' specifies the prior destination address (phone number or chat launch point name). It is used for forwarded calls. === $(item.contactId) === ''$(item.contactId)'' specifies the ID of the CRM contact associated with the caller, if any. '''Note:''' This variable is available in workflows. === $(item.firstName) === ''$(item.firstName)'' specifies the customer first name. The scenario may get or set this variable. Setting the variable also updates the historical database interaction step as well as customer chat party information. '''Note:''' This variable is available in workflows. === $(item.lastName) === ''$(item.lastName)'' specifies the customer last name and passes the ANI for SMS interactions. The scenario may get or set this variable. Setting the variable also updates the historical database interaction step as well as customer chat party information. '''Note:''' This variable is available in workflows. === $(item.customerPhone) === ''$(item.customerPhone)'' specifies the customer phone number. This variable enables passing customer phone information from scenarios of primary inbound and outbound customer calls to scenarios of the associated consultations and blind transfers. * In scenarios launched for new incoming calls, its value matches the value of the ''$(item.from)'' variable. * In scenarios launched for new outgoing calls, its value matches the value of the ''$(item.to)'' variable. * In scenarios launched for consult calls and blind transfers, the value of the ''$(item.customerPhone)'' is inherited from the scenarios of the associated primary calls. '''Note:''' This variable is available in workflows. === $(item.email) === ''$(item.email)'' specifies the customer email address. It may contain multiple addresses separated by a comma or semicolon, and the scenario may get or set this variable. '''Note:''' This variable is available in workflows. === $(item.sendTranscript) === For chat interactions, scenario must set the ''$(item.sendTranscript)'' variable to ''1'' to have a session transcript emailed to the customer. The variable can be set at any time. The transcript will be emailed to the address(es) specified in ''$(item.email)'' when the session ends. For the corresponding email template and SMTP configuration, see section [[#topic_contact-center-administrator-guide/emailsettings|Email Settings]] of the ''Contact Center Administrator Guide''. === $(item.data.) === ''$(item.data.)'' specifies a key-value list of optional additional interaction data. To obtain content of a particular data element, use ''$(item.data.)'' (e.g., ''$(item.data.firstName)'') === $(item.message) === For chat interactions, the ''$(item.message)'' variable specifies the last chat message received from the origination side. === $(item.newMessage) === For chat interactions, the ''$(item.newMessage)'' variable adds a new message as it was received from customer. This variable is used to populate a chat session with form field values. The new message is treated as it was received from the customer and is added to chat transcript. === $(item.transcript) === For chat interactions, the ''$(item.transcript)'' variable gets the full JSON transcript of the chat session. === $(item.transcript.text) === For chat interactions, the ''$(item.transcript.text)'' variable gets the text transcript of the chat session. === $(item.transcript.HTML) === For chat interactions, the ''$(item.transcript.HTML)'' variable gets the HTML formatted transcript of the chat session. === $(item.externalChatData) === For chat interactions, use the ''$(item.externalChatData)'' variable to specify the full collection of data received from the customer chat page. This is a container for all values that were entered by the customer while chat was in the [[#topic_scenario-builder-reference-guide/requestinput|Request Input]] block for their possible later use in the scenario. In addition, ''$(item.externalChatData)'' can be used to pass custom variables from widget pre-chat configuration. Input fields (text boxes) can be saved as these custom variables. and the '''name''' field is what is saved as the ending of the variable (e.g., name = issue variable = ''$(item.externalChatData.issue)''). Note that this variable is case-locked; the variable must be typed in lowercase for it to work. === $(item.externalChatData.user_platform.browser) === For chat interactions, this variable returns the type and version of the browser used by the customer. Note that this variable will contain data only if the customer-side chat application was designed using the Bright Pattern Chat Widget Configuration application. === $(item.externalChatData.user_platform.os) === For chat interactions, this variable returns the type and version of the operating system used by the customer. Note that this variable will contain data only if the customer-side chat application was designed using the Bright Pattern Chat Widget Configuration application. === $(item.externalChatData.user_platform.description) === For chat interactions, this variable returns the type and version of both the browser and operating system used by the customer. Note that this variable will contain data only if the customer-side chat application was designed using the Bright Pattern Chat Widget Configuration application. === $(item.virtualDevice) === The voice scenario may set the ''$(item.virtualDevice)'' variable to indicate that an inbound call should not be terminated when the scenario ends; instead, the call will be converted to "virtual phone" (used for external agents on PBX). ===$(item.sip.headers) === ''$(item.sip.headers)'' gets the key-value list of SIP INVITE headers from inbound calls. This variable can be used to obtain content of individual P-, X- and Diversion headers. To obtain content of a particular header, use ''$(item.sip.headers.)'' (e.g., ''$(item.sip.headers.X-tdm-channelnumber)''). ===$(item.sip.send.headers.XXX=ZZZ)=== When making a call using the Connect Call block, before calling the Connect Call block, the scenario can set SIP headers to be included in INVITE in the format ''item.sip.send.headers.XXX=ZZZ'', where ''XXX'' is a header name (e.g., "P-Customer-Type"). Note that the ''XXX'' must begin with either the letter P or the letter X. === $(item.EWT) === For voice and chat interactions, ''$(item.EWT)'' is the item's current estimated waiting time (in seconds). === $(item.queuePos) === For voice and chat interactions, ''$(item.queuePos)'' is the item’s current position in queue. This variable displays results while the interaction is in the [[#topic_scenario-builder-reference-guide/scenarioblocks/findagent|Find Agent]] block; it is blank at all other times. === $(item.continuationUserId) === If the customer had contacted the system before and was connected to an agent, the ''$(item.continuationUserId)'' variable will contact the user ID of the agent. It could be used to route new customer interaction to the same agent. === $(item.averageSentiment) === If sentiment analysis is being performed on an interaction, the ''$(item.averageSentiment)'' variable is set to the current average sentiment value. It is changed whenever the average sentiment is updated. '''Note:''' This variable is available in workflows. === $(item.sentiment) === If sentiment analysis is being performed on an interaction, the ''$(item.sentiment)'' variable is set to the sentiment value of the last analyzed phrase. === $(item.emotion) === If sentiment analysis is being performed on an interaction, the ''$(item.emotion)'' variable is set to the emotion value of the last analyzed phrase. === $(item.keywords) === If sentiment analysis is being performed on an interaction, the ''$(item.keywords)'' variable is set to the array of the keywords found in the last analyzed phrase. == Scenario Configuration Properties== === $(app.version) === '$(app.version)'' specifies the scenario version (as reported by configuration server). === $(app.appName) === The ''$(app.appName)'' variable specifies the scenario name. === $(app.name) === ''$(app.name)'' specifies the scenario entry name. === $(app.priority) === The ''$(app.priority)'' variable holds the priority specified in the scenario launch point. Note that all variables that begin with "app" are configuration parameters from either the scenario itself (i.e., ''app.name'') or the launch point (i.e., ''app.priority''). === $(app.tenantName) === ''$(app.tenantName)'' is the tenant name. == Custom Parameters == === $(app.custom.XXX) === ''$(app.custom.XXX)'' names the custom parameters that can be specified in a scenario entry. The variable must follow naming convention ''$(app.custom.XXX)'', where ''XXX'' is the name of the custom parameter. All scenario variables conforming to such convention are treated as custom parameters. The list of such parameters will be displayed in the property ''Scenario parameters'' of every [[#topic_contact-center-administrator-guide/dial-in|scenario entry]] associated with the given scenario. You can set values of such custom parameters for every scenario entry point separately. == User Configuration Variables== === $(user.id) === ''$(user.id)'' is the unique identifier assigned to this user object in configuration. === $(user.version) === ''$(user.version)'' is the version of the user's configuration information. === $(user.loginId) === This variable is the user’s username. '''Note:''' This variable is available in workflows. === $(user.team) === ''$(user.team)'' is the name of the team to which the user is assigned. === $(user.firstName) === ''$(user.firstName)'' is the user’s first name. '''Note:''' This variable is available in workflows. === $(user.lastName) === ''$(user.lastName)'' is the user’s last name. '''Note:''' This variable is available in workflows. === $(user.phone) === This variable is the phone number that the user is logged onto or the user's extension as specified in configuration. == Service Parameters == === $(service.name) === ''$(service.name)'' is the name of the service (as specified in the [[#topic_contact-center-administrator-guide/dial-in|scenario entry]] or in the [[#topic_scenario-builder-reference-guide/requestskillorservice|Request Skill or Service]] block). === $(service.version) === ''$(service.version)'' is the version of service configuration information. === $(service.slPercent) === This variable specifies the [[#topic_contact-center-administrator-guide/serviceleveltab|Service level]] call percentage. === $(service.slTimeout) === The ''$(service.slTimeout)'' variable specifies the [[#topic_contact-center-administrator-guide/serviceleveltab|Service level]] timeout in seconds. === $(service.EWT) === ''$(service.EWT)'' is the current estimated waiting time for the service. It is calculated as the average time the last 20 answered interactions waited in the service queue before being answered. === $(service.queueLength) === ''$(service.queueLength)'' is current queue length for the service. == Outbound Target Workitem Parameters == === $(workitem.id) === ''$(workitem.id)'' is the Workitem identifier. === $(workitem.firstName) === ''$(workitem.firstName)'' is the customer’s first name. === $(workitem.lastName) === ''$(workitem.lastName)'' is the customer’s last name. === $(workitem.suggestedPhone) === This variable is the customer's default phone number. === $(workitem.otherInfo) === ''$(workitem.otherInfo)'' specifies all list fields except phones, first name, and last name (e.g., ''$(workitem.otherInfo.MTN)''). === $(workitem.fullInfo) === ''$(workitem.fullInfo)'' specifies all list fields (e.g., ''$(workitem.fullInfo.MTN)''). = String Expressions= In Bright Pattern Contact Center, you may work with data as variables stored as values, which may be specified as strings or expressions. A string is a sequence of characters that is generally understood as a data type; often a string is implemented as an array of bytes (i.e., words) that store a sequence of elements. An expression will produce a data type such as string. What follows is a list of tips regarding string expression structure. * Strings are enclosed in double quotes (e.g. ''“sample string”''). * Backslash can be used to embed a double quote phrase within a string (e.g., ''“sample string \”embedded quote\” sample string”''). * Backslash can also be used to insert literal new-line and carriage-return symbols using the ''\n'' and ''\r'' notation (e.g., ''“sample string\n with new line in it”''). * Strings can be concatenated; that is, strings can be linked together as in a chain (e.g., ''“string 1”+” “+”string2”'' produces ''“string1 string2”''). * Strings themselves or string expressions cannot span multiple lines (i.e., while embedded, ''\n'' is OK, but the actual new line is not).

[[#topic_scenario-builder-reference-guide/variables|< Previous]] | [[#topic_scenario-builder-reference-guide/integerexpressions|Next >]]
= Integer Expressions= Some helpful information on using integer expressions in the Scenario Builder application is given as follows. * Numbers can have the unary minus operator (e.g., ''-2''). * The four arithmetic operations and parentheses, including nested ones, are supported (e.g., ''(2+3)*((7-1)/2+1)''). * Division by zero produces error in the log; the operation result is undefined. * Strings cannot be mixed in one expression with numbers (e.g., ''=2 + “string”'' is invalid).
[[#topic_scenario-builder-reference-guide/stringexpressions|< Previous]] | [[#topic_scenario-builder-reference-guide/floatingpointexpressions|Next >]]
= Floating Point Expressions= Some helpful information on using floating point expressions in the Scenario Builder application is given as follows. * Either the point or exponent can be used (e.g., ''2.00'' or ''2E00'' or ''20E-1'' or ''.2E1''). * The four arithmetic operations and parentheses, including nested ones, are supported. * A mix of floats and integers produces a floating expression. * Division by zero produces error in the log; the operation result is undefined.
[[#topic_scenario-builder-reference-guide/integerexpressions|< Previous]] | [[#topic_scenario-builder-reference-guide/built-infunctions|Next >]]
= Built-in Functions= A number of built-in functions may be used in the Scenario Builder application. To invoke a function from a text field, prefix it with an equal sign. Example: ''=now("UTC")'' == Descriptions == The functions are described as follows. === formatdatetime(int unixtimestamp, string format) === This function formats the time as specified in the format argument. This format is the same as in Java [http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/SimpleDateFormat.html SimpleDateFormat], as implemented by the International Components for Unicode (ICU)library. Example: ''"yyyy-MM-dd'T'HH:mm'Z'"'' yields ''2012-07-20T20:45:44.0973928Z'' === formatduration(duration_in_seconds) === This function converts duration in specified in seconds into ''MM:SS'' or ''HHH:MM:SS'' formats. It produces formatted string as output (e.g., ''formatduration(121)'' will return ''"02:01"''). === hmac(hash_function, key, message) === This function is used to create an authentication hash (HMAC) for MD5, SHA-1, and SHA-256, where ''Hash_function = (“MD5” | “SHA-1” | “SHA-256”)''. Returned value is a string with base64-encoded hash. === length(string) === This function returns the number of characters in a string. === now(string timezone) === This function returns the current time in the specified time zone in Unix format (number of seconds elapsed since 1/1/1970, 00:00:00 UTC). Time zone is optional; if not specified, the current time will be returned in the tenant’s default time zone. === parsedatetime(string datetime, string format) === This function returns the specified date and time in Unix format (number of seconds elapsed since 1/1/1970, 00:00:00 UTC). The date and time input is expected in the ICU’s Java [http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/SimpleDateFormat.html SimpleDateFormat]. === replace(string, search_pattern, replace_pattern, flags) === * This function performs search and replace in the input string. It returns the string with replacements performed. * Parameters are as follows: ** '''string''' is the input string to be searched. ** '''search_pattern''' is the regular expression pattern to be matched in the input string. The list of supported patterns can be found in the table below. Note the extra \ in escapes. This is necessary in order to allow literal insertions of " and new line symbols. ** '''replace_pattern''' is the text to insert instead of matched text according to search pattern. ''\\0 - \\9'' are allowed in replacements. ** '''flags''' denote one or more of the following additional conditions: *** '''i''' – ignore case in the search *** '''g''' – replace all matches because otherwise only the first match will be replaced (e.g., ''replace("abcdefg","c","z","ig")'' produces ''"abzdefg"''). Example that takes first name from fullname variable and could be used in value section of Set Variable block: =replace("$(fullname)","(.*)\s+(.*)","\1","i") === round(floating_number, precision) === This function rounds the number to the ''<precision>'' number of digits after the point. The result is still a floating point number. === stripnondigits(string) === This function removes non-digit characters from string, leaving only digits from 0 to 9, * and # symbols (e.g., ''stripnondigits("123abc456")'' will return ''"123456"''). === titlecase(string) === This function converts string to title case (i.e., each word is capitalized). === tostring(integer) === This function converts an integer to a string (e.g., ''tostring(-2+1)'' should return ''"-1"'' as a string). === urlencode(string) === URL encodes a string, replacing special characters using the ''%dd'' notation. This is a conservative implementation that replaces all characters that are not explicitly in allowed characters. == Pattern Types == Pattern types are described as follows. {|border="1" style="border-collapse:collapse" cellpadding="5" |'''Pattern''' |'''Description''' |- |'''^''' |Match beginning of a buffer |- |'''$''' |Match end of a buffer |- |'''()''' |Grouping and substring capturing |- |'''[…]''' |Match any character from the set |- |'''[^…]''' |Match any character but the ones from the set |- |'''\\s''' |Match whitespace |- |'''\\S''' |Match non-whitespace |- |'''\\d''' |Match decimal digit |- |'''\\D''' |Match anything but decimal digit |- |'''\\r''' |Match carriage return |- |'''\\n''' |Match new line |- |'''+''' |Match one or more times (greedy) |- |'''+?''' |Match one or more times (non-greedy) |- |'''*''' |Match zero or more times (greedy) |- |'''*?''' |Match zero or more times (non-greedy) |- |'''?''' |Match zero or once |- |'''\\meta''' |Match one of the meta characters: ^$().[*+?\ |}
[[#topic_scenario-builder-reference-guide/floatingpointexpressions|< Previous]] | [[#topic_scenario-builder-reference-guide/voicesegmenttypes|Next >]]
= Voice Segments = This section describes the types of voice segments that can be used to create voice prompts for scenario blocks [[#topic_scenario-builder-reference-guide/collectdigits|Collect Digits]], [[#topic_scenario-builder-reference-guide/menu|Menu]], and [[#topic_scenario-builder-reference-guide/playprompt|Play Prompt]]. The drop-down menu of voice segment types appears when you select '''Add New''' in the '''Prompt list''' dialog and click '''Add voice segment'''. Voice segment parameters depend on the selected segment type. These segment types are explained as follows. '''Note''': All voice segment files must be in PCM/16-bit/8 KHz/Mono format. == Types == === Voice === The Voice segment lays the content of the uploaded voice file. When creating a new segment of this type, click '''upload''' and select the voice file to be played. You can also enter the content of this message as a text in the '''Content''' field. If the scenario cannot find the file, it will convert to speech and play the text specified in this field. Note that the text-to-speech function may not be available for all languages. You can obtain the list of the currently supported languages from your service provider. === Shared Voice === The Shared Voice segment plays the content of the selected [[#topic_contact-center-administrator-guide/sharedvoicesegments|shared voice segment]] defined at the contact center level for use in multiple scenarios. Select the name of the desired shared voice segment from the drop-down menu. === Voice, from parameter === This segment plays the voice segment defined as an external parameter whose value depends on which [[#topic_contact-center-administrator-guide/dial-in|dial-in scenario entry]] this scenario is to be used. Define the variable name here and set its values in property '''Scenario parameters''' of the dial-in scenario entries where this scenario will be used. Note that although the full format of the variable is ''$(app.custom.XXX)'', you only need to define the ''XXX'' part in the variable field. === Number === The Number segment plays the specified number. It can be defined as a variable. Use ''Frac.digits'' to define the number of digits after the decimal point to which the natural numbers will be rounded when played as voice (e.g., if ''Frac.digits'' is set to ''2'' and the variable defined in the ''Value'' field returns ''173.2534895'', the voice segment will be played as ''one hundred seventy-three point twenty-five''. === Ordinal === The Ordinal segment plays the specified number as an ordinal number. It can be defined as a variable. === Currency === The Currency segment plays the specified amount and the selected currency (e.g. ''sixty-nine euros''). The amount can be defined as a variable. Note that not all currencies are supported in all languages. === DateTime === The DateTime segment plays the specified date and/or time in the selected format for the selected time zone. Date and time can be defined as a variable. The input is expected in Unix time (number of seconds elapsed since 1/1/1970, 00:00:00 UTC). The [[#topic_scenario-builder-reference-guide/built-infunctions|parsedatetime]] function can be used to convert a human-readable time string into the Unix time. === Phone === The Phone segment plays the specified phone number. The number will be pronounced according to the pattern accepted in the selected language. It can be defined as a variable. === Spell === The Spell segment spells the specified phrase, and it can be defined as a variable. Select the Read Capitals checkbox if the capital letters in the phrase shall be preceded with the word capital (e.g., ''aZf'' will be spelled as ''a-z-f'' when the checkbox is not selected, and ''a-capital-z-f'' when it is selected). === Word === The Word segment plays a single-word ''.WAV'' file with the specified name from the ''<root>\audio\talkers\[selected_language]\words'' directory. The name can be defined as a variable. Note that the Word segment type is currently supported for Enterprise installations only. === Personal Name === The Personal Name segment plays the specified parts of personal names with the correct intonation (e.g., for a full three-part name, the intonation will rise while playing the first name, be neutral for the middle name, and will drop for the last name). The name parts are contained in the ''<root>\audio\talkers\[selected_language]\names'' directory. This segment type is currently supported for Enterprise installations only. === Text === This segment converts to speech and plays the specified text. The Text segment can be defined as a variable. === URL === The URL segment plays the voice content from the source indicated by the specified URL. This segment type is designed to play back the prompts recorded by the [[#topic_scenario-builder-reference-guide/record|Record]] block and takes the URL parameter as returned by that block. If the URL points to some other location, the system will copy the voice content referenced by the URL, cache it locally, and use it for all subsequent scenario executions until the cache is purged. Therefore, (1) voice content referenced by the URL must be available at all times, and (2), possible changes of the voice content referenced by the URL may not be detected as long as URL itself remains unchanged. === EWT === The EWT segment plays the current estimated wait time for the given interaction in the ''hours, minutes, seconds'' format.
[[#topic_scenario-builder-reference-guide/built-infunctions|< Previous]] | [[#topic_scenario-builder-reference-guide/scenarioexample|Next >]]
= Scenario Example= This section provides a simplified example of a typical scenario for processing inbound service calls. Imagine contact center operations of a security equipment company called All Safe. The contact center provides two services: one for product sales and the other for support. Both services are provided within typical business hours and are available in two languages, English and Spanish. The company’s contact center has one general service number and uses interactive voice response (IVR) technology for language and service selection before distributing calls to qualified agents. To support this operation, the following resources are configured in the system: * [[#topic_contact-center-administrator-guide/servicesandcampaignsoverview|Services]]: '''Sales''' for sales calls, '''Support''' for support calls, and '''General''' for unqualified calls and general inquiries * An [[#topic_contact-center-administrator-guide/auxiliaryskills|auxiliary skill group]]: '''Languages''' with skills '''English''' and '''Spanish''' * A [[#topic_contact-center-administrator-guide/teams|team]] of [[#topic_contact-center-administrator-guide/users|agents]] specializing in product sales and associated with the services '''Sales''' and '''General'''. All agents have the corresponding default service skills, all have the '''English''' skill, and some also have the '''Spanish''' skill. * A team of agents specializing in product support and associated with services '''Support''' and '''General'''. All agents have the corresponding default service skills, all have the '''English''' skill, and some also have the '''Spanish''' skill. * [[#topic_contact-center-administrator-guide/hoursofoperation|Hours of operation]] (HOP) for all services. * An [[#topic_contact-center-administrator-guide/accessnumbers|access number]] that customers will use to call the services. A simplified scenario for processing calls made to All Safe may look like this: # First, the call arrival time is checked against the contact center operational schedule. If the call arrives outside of the business hours, an announcement is played back, prompting the caller to call again during business hours. The call is then disconnected. # If the call arrives within business hours, a general greeting is played first. # The caller is prompted to select a language. # Based on the caller’s input, the corresponding language skill is set as one of the agent selection criteria, and the language of the subsequent voice prompts is set to match the caller’s preference. If the caller does not provide any input within a timeout, the English language is set for both the language skill and voice prompts. # The caller is prompted to select the service. # Based on the caller’s input, the corresponding service skill is set as one of the agent selection criteria. If the caller does not provide any input within a timeout, the '''General''' service skill is selected. # The call is then queued while the system looks for an available agent who has both selected skills. # As soon as such an agent becomes available, the system delivers the call to the agent extension. (If other calls are waiting for the same skill set, they are distributed to agents in the order of their arrival.) # If the selected agent does not answer, the call is returned to the service queue to wait for the next available agent with the matching skills. When translated into the Bright Pattern scenario language, the scenario description appears in the Scenario Builder application as shown. [[File:Scenario-guide-image3.png|thumb|600px|center]] Once the scenario is defined, a [[#topic_contact-center-administrator-guide/dial-in|dial-in scenario entry]] will have to be created in the configuration in order to associate this scenario with the corresponding external access number.
[[#topic_scenario-builder-reference-guide/voicesegmenttypes|< Previous]]