15 KiB
.gbdialog Reference
General Bots BASIC using HEAR and TALK keywords provides a easy to write bot language accessible to everyone and used as incomer for people willing to make their own bot.
It is like creating a conversation Node.js application just using BASIC. All code will run isolated on a Node VM:
Using Conversational BASIC
The following file types are loaded from a .gbdialog package: .vbs
, .vb
, .basic
and .bas
.
General Bots BASIC reference
Instruction / Usage | Description | Example |
---|---|---|
HEAR variable | Hears something from the person into a variable for later use. | HEAR name |
confirm variable (Comming soon) | Waits for confirmation like 'yes', 'y', 'yeah' and return true or false | |
TALK message | Talk the specified message to the person. | TALK "Hello world." |
GENERATE A PASSWORD | Creates a new password into the system variable password for later use. | |
CREATE A BOT FARM USING params | Deploys a new bot farm to the cloud. | |
WAIT seconds | Wait a number of seconds before continuing the conversation. | |
variable = GET "file.xlsx", "A1:A1" | Gets the value of the cell specified in range address | |
SET "file.xlsx", "A1:A1", 42 | Gets the value of the cell specified in range address | |
variable = GET "https://server/query" | Gets the value of the cell specified in range address | |
POST "https://", data | Gets the value of the cell specified in range address | |
wait seconds | Wait a number of seconds before continuing the conversation. | |
HEAR variable AS EMAIL | ||
HEAR variable AS DATE | ||
HEAR variable AS NAME | ||
HEAR variable AS INTEGER | eg.: HEAR approve as Boolean. | |
HEAR variable AS BOOLEAN | ||
HEAR variable AS HOUR | ||
HEAR variable AS MONEY | ||
HEAR variable AS MOBILE | ||
* HEAR variable AS FILE | Returns a file uploaded by user to be saved with SAVE variable AS "folder/folder/file" on .gbdrive. | |
HEAR variable AS AUDIO | Returns a audio uploaded by user to be saved with SAVE. | |
HEAR variable AS ZIPCODE | ||
HEAR variable AS "Abacate", "Maçã", "Morango" | Displays the specified menu and waits for this input until user select one of them. | |
HEAR variable AS LANGUAGE | ||
HEAR variable AS LOGIN (internal) | Waits for Active Directoy login integration before proceeding with the dialog . | |
GO TO [number,] dialogName | Transfers the conversation to a next dialog for the specificed number or as last command, transfers the context to this dialog. | |
SEE CAPTION OF url AS variable | Extracts an caption, using a pre-trained neural network, from a image. | |
SEE TEXT OF url AS variable | Extracts text from the image in a OCR (Optical Character Recognition) feature. | |
data = SELECT a, SUM(b) AS b FROM data GROUP BY a | Use SQL to manipulate a data variable returned from FIND or an array | variable = CHART "pie", data |
file = data AS IMAGE | Converts a two dimension array into an image file, ready to be used with SAVE AS or SEND FILE. | |
file = data AS PDF | Converts a two dimension array into an PDF file, ready to be used with SAVE AS or SEND FILE. | |
page = OPEN url [AS #namedSession] | Web automation retrival of a web page saving the session for reuse in other dialogs (optional). | |
* variable = GET page, cssSelector, "body > img" | Retrives an element within an IFRAME specified by selector eg.: "[name=iFrameName]", to be used later. | |
* SET page, cssSelector, value | Define an field to value eg. "value 123" on the webpage specified by selector eg. "#id". | |
* CLICK page, cssSelector | Clicks on an element inside the web page being automated by General Bots. | |
* file = DOWNLOAD url | ||
NEW OBJECT | Creates a new object to be used with REST calls for example. data = NEW OBJECT data.color = "blue" |
|
NEW ARRAY | Creates a new array. data = NEW ARRAY data[0] = "blue" |
|
QRCODE | Creates a QRCode from specified text, eg.: file = QRCODE "data" | |
ADD NOTE | Adds a note to a file named Notes.xls of .gbdata. eg.: ADD NOTE "text" | |
ALLOW ROLE | Check if role specified in People sheet (.gbdata) will have access. eg.: ALLOW ROLE "DevOps" | |
CONTINUATION TOKEN | Retuns the value of the continuation token associated with the current dialog. | |
UPLOAD file | Uploads a file to a storage blob, like Azure Storage. | |
DIR path | Returns a list of files to be used with FOR EACH and performs actions. | |
TABLE name ON connection | Defines a TABLE on specified storage (database) connection. | |
field AS dataType | Defines a field in TABLE. Eg.: name string(50). | |
FILL | Fills a data into a Word document to be exported as images | |
INCLUDE file | Includes a file into .gbdialog | |
FORMAT value, format | Formats a value according to format specified. Eg. d = FORMAT today, "YYYY-MM-dd" | |
SEND MAIL | Sends an e-mail, eg.: SEND MAIL "mail@domain.com", "Subject", "Message body." |
Internal Variables and Functions.
These are variables that can be used in General Bots BASIC to faster dialog and services faster. All values from .gbot Config.xlsx are also provided as variables, so it can be acessed directly in dialog.
Instruction / Usage | Description |
---|---|
aadToken() | Auto generated variable that contains Azure AD Token useful for calling Microsoft Web Services. |
Options
Instruction / Usage | Description |
---|---|
SET PARAM name AS value | Defines a retrievable param in the storage in the scope of the user |
GET PARAM name | Returns a previously user scoped param via SET PARAM from the storage. |
SET HTTP HEADER _key = value | Defines an HTTP header to be used to next GET call. |
SET HTTP USERNAME = value | Defines the HTTP username to be used to next GET call. |
SET HTTP PASSWORD = value | Defines the HTTP password to be used to next GET call. |
* SET HEAR ON "mobile" | |
SET MAX LINES value | |
SET SCHEDULE "2 * * * * *" | |
SET LANGUAGE value | |
SET TRANSLATOR [ON or OFF] | |
SET WHOLE WORD [TRUE or FALSE] | |
SET THEME "dark" or "white" or "blue" | Defines the theme to the next content generation (PDF, images, vídeos, etc.) |
SET OPERATOR [OR] | Defines OR operations on multiple FIND filters separated by comma, eg.: FIND "A1=2", "A3=4" |
SET FILTER TYPE [comma separated list of types] | Uses the specified type in next FIND calls, disabling auto detection of filter type, eg.: SET FILTER TYPE date, string |
SET PAGED "auto" or "none" | Defines auto pagging for HTTP REST GET calls. |
- = Work in progress.
How To
Use code in Excel
To reply as code in Excel, start the cell value with /basic followed by the code itself. Eg.:
/basic
TALK "Hello."
Use General Bots computer vision
- Develop a BASIC dialog and publish;
- Test it in the conversation
Using General Bots Web Automation to ask humans about unreadable captchas
mobile = "5521000000000"
page = GET HTML "https://www.any-website.com/"
SET page, "#usuario", "user"
SET page, "#j_password", "xxxxxxxxxxx"
img = GET page, "[name=iCaptcha]", "body > img"
SEND FILE TO mobile, img
TALK TO mobile, "Digite o código da imagem para prosseguir:"
SET HEAR ON mobile
HEAR captcha
SET page, "#captcha", captcha
CLICK page, "#bt-login"
TALK TO mobile, "Login done, thanks."
Using General Bots SQL and dynamic image and chart generation
On the fly table as images.
SET MAX LINES 1000
data = FIND "data.xlsx",
data = SELECT a, SUM(b) AS b FROM data GROUP BY a
SET THEME dark
png = data as IMAGE
SEND FILE png
On the fly charts
data = [10, 20, 30]
legends= "Steve;Yui;Carlos"
img = CHART "pie", data, legends
SEND FILE img
SAVE img as "folder/filename.jpg"
Using General Bots Web Automation to custom notify about Google Calendar
REM Perform G. Login.
OPEN "https://accounts.google.com/ServiceLogin"
SET "#identifierId", "test@gmail.com"
PRESS ENTER
WAIT 3
SET "input[type='password']", "******"
PRESS ENTER
WAIT 5
REM Enter on the Calendar page and capture the calendar grid inside the page.
OPEN "https://calendar.google.com/calendar/u/0/r?tab=mc&pli=1"
file = SCREENSHOT "div.K2fuAf"
REM Notify all team members with the updated calendar image.
list = FIND "People.xlsx", "Calendar=Y"
index = 1
DO WHILE index < ubound(list)
row = list[index]
TALK TO row.Mobile, "Hello " + row.Name + ", here is your calendar:"
SEND FILE TO row.Mobile, file, "Calendar"
index = index + 1
LOOP
Using complete General Bots Conversational Data Analytics
TALK "General Bots Labs presents FISCAL DATA SHOW BY BASIC"
TALK "Gift Contributions to Reduce the Public Debt API (https://fiscaldata.treasury.gov/datasets/gift-contributions-reduce-debt-held-by-public/gift-contributions-to-reduce-the-public-debt)"
result = GET "https://api.fiscaldata.treasury.gov/services/api/fiscal_service/v2/accounting/od/gift_contributions?page[size]=500"
data = result.data
data = SELECT YEAR(record_date) as Yr, SUM(CAST(contribution_amt AS NUMBER)) AS Amount FROM data GROUP BY YEAR(record_date)
TALK "Demonstration of Gift Contributions with AS IMAGE keyword"
SET THEME dark
png = data as IMAGE
SEND FILE png
DELAY 5
TALK " Demonstration of Gift Contributions CHART keyword"
img = CHART "bar", data
SEND FILE img
Using General Bots Office templates
data = FIND "Customer.xlsx", "Idade=25"
doc = TEMPLATE "template.docx" WITH data
SAVE doc AS "resume.docx"
SEND EMAIL "noreply@pragmatismo.io", "Subject", doc
Automating GitHub Issue creation with General Bots Automation
REM Realiza login no GitHub.
page = GET HTML "https://github.com/login"
SET page, "#login_field", "username"
SET page, "#password", "*******"
PRESS ENTER ON page
REM Verifica 2FA.
SET HEAR ON "5521999999999"
TALK "Digite o código de dupla autenticação enviado..."
HEAR code
SET page, "#otp", code
PRESS ENTER ON page
REM Extrai cada Issue da planilha e cria no GitHub.
list = FIND "issues.xlsx"
index = 1
DO WHILE index <38
row = list[index]
page = GET HTML "https://github.com/GeneralBots/BotServer/issues/new"
SET page, "#issue_title", row.title
SET page, "#issue_body", row.body
CLICK page, "#new_issue > div > div > div.Layout-main > div > div.timeline-comment.color-bg-default.hx_comment-box--tip > div > div.flex-items-center.flex-justify-end.d-none.d-md-flex.mx-2.mb-2.px-0 > button"
TALK "Issue '" + row.title + "' criado."
WAIT 5
index = index + 1
LOOP
EXIT
Using POST data
You can use POST passing a variable as the second param in the POST call. The example bellow shows how to call POST using an object that is returned from the Excel file.
Given the Excel file with the following contents and saved to the standard .gbdialog folder:
tokenId | token | comment |
---|---|---|
29187 | AAMkAGEzMWIxMmI5 | Prod1 |
98739 | jZWYtNGQ3My1iNmM | Prod2 |
The Word bellow will invoke POST call by using line contents as object attributes:
obj = FIND "dados.xlsx", "tokenId=29187"
POST "https://server/query", obj
' obj here is {tokenId: 29187, token: "AAMkAGEzMWIxMmI5", comment: "Prod1"}
- OAuth2 is being implemented and no modification to previous calls will be necessary as this configuration will be an administrative conversation to get the token setup.
Generate a password for the person
talk "Let's generate a very dificult to guess password for the new bot:"
generate a password
talk "Your password is *" + password + "*. Keep it on a safe place only acessible to you."
Get the list of cloud subscriptions
hear one of subscriptions with email, password into subscriptionId
talk "The subscription selected was: " + subscriptionId