diff --git a/site/docs/chapter-05-gbdialog-reference.md b/site/docs/chapter-05-gbdialog-reference.md index 2fcb455c..3885cf08 100644 --- a/site/docs/chapter-05-gbdialog-reference.md +++ b/site/docs/chapter-05-gbdialog-reference.md @@ -12,7 +12,6 @@ It is like creating a conversation Node.js application just using BASIC. All cod  - ## Using Conversational BASIC The following file types are loaded from a .gbdialog package: `.vbs`, `.vb`, `.basic` and `.bas`. @@ -21,79 +20,79 @@ The following file types are loaded from a .gbdialog package: `.vbs`, `.vb`, `.b To organize the instructions functionally, I'll group them into five categories: **Basic Interaction**, **Data Handling**, **Web Automation**, **File Management**, and **Advanced Operations**. Each group will include relevant instructions with examples. - ## Basic Interaction -| Instruction / Usage | Description | Example | -| ------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- | -| HEAR _variable_ | Hears something from the person into a _variable_ for later use. |
HEAR name| -| TALK _message_ | Talk the specified _message_ to the person. |
TALK "Your name is " + name.
TALK "Hello world."| -| WAIT _seconds_ | Wait a number of seconds before continuing the conversation. |
WAIT 10| -| confirm _variable_ (Comming soon) | Waits for confirmation like 'yes', 'y', 'yeah' and returns true or false |
TALK "Waited for 10 seconds."
HEAR confirm| -| HEAR _variable_ AS EMAIL | Hears and validates an email address from the user. |
TALK "Please confirm if you want to proceed."
if confirm THEN TALK "Confirmed." ELSE TALK "Not confirmed."
HEAR email AS EMAIL| -| HEAR _variable_ AS DATE | Hears and validates a date from the user. |
TALK "Email received: " + email.
HEAR date AS DATE| -| HEAR _variable_ AS NAME | Hears and validates a name from the user. |
TALK "Date received: " + date.
HEAR name AS NAME| -| HEAR _variable_ AS INTEGER | Hears and validates an integer from the user. |
TALK "Name received: " + name.
HEAR age AS INTEGER| -| HEAR _variable_ AS BOOLEAN | Hears and validates a boolean (true/false) from the user. |
TALK "Age received: " + age.
HEAR agree AS BOOLEAN| -| HEAR _variable_ AS HOUR | Hears and validates an hour from the user. |
TALK "Agreement status: " + agree.
HEAR hour AS HOUR| -| HEAR _variable_ AS MONEY | Hears and validates a monetary amount from the user. |
TALK "Hour received: " + hour.
HEAR amount AS MONEY| -| HEAR _variable_ AS MOBILE | Hears and validates a mobile number from the user. |
TALK "Amount received: " + amount.
HEAR mobile AS MOBILE| -| HEAR _variable_ AS ZIPCODE | Hears and validates a ZIP code from the user. |
TALK "Mobile number received: " + mobile.
HEAR zipcode AS ZIPCODE| -| HEAR _variable_ AS "Abacate", "Maçã", "Morango" | Displays the specified menu and waits for user selection. |
TALK "ZIP Code received: " + zipcode.
HEAR fruit AS "Abacate", "Maçã", "Morango"| -| HEAR _variable_ AS LANGUAGE | Hears and validates a language code from the user. |
TALK "You selected: " + fruit.
HEAR language AS LANGUAGE| -| HEAR _variable_ AS LOGIN (internal) | Waits for Active Directory login integration before proceeding. |
TALK "Language selected: " + language.
HEAR user AS LOGIN| +| Instruction / Usage | Description | Example | +| ----------------------------------------------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- | +| HEAR _variable_ | Hears something from the person into a _variable_ for later use. |
TALK "User logged in: " + user.
HEAR name| +| TALK _message_ | Talk the specified _message_ to the person. |
TALK "Your name is " + name.
TALK "Hello world."| +| WAIT _seconds_ | Wait a number of seconds before continuing the conversation. |
WAIT 10| +| confirm _variable_ (Comming soon) | Waits for confirmation like 'yes', 'y', 'yeah' and returns true or false |
TALK "Waited for 10 seconds."
HEAR confirm| +| HEAR _variable_ AS EMAIL | Hears and validates an email address from the user. |
TALK "Please confirm if you want to proceed."
if confirm THEN TALK "Confirmed." ELSE TALK "Not confirmed."
HEAR email AS EMAIL| +| HEAR _variable_ AS DATE | Hears and validates a date from the user. |
TALK "Email received: " + email.
HEAR date AS DATE| +| HEAR _variable_ AS NAME | Hears and validates a name from the user. |
TALK "Date received: " + date.
HEAR name AS NAME| +| HEAR _variable_ AS INTEGER | Hears and validates an integer from the user. |
TALK "Name received: " + name.
HEAR age AS INTEGER| +| HEAR _variable_ AS BOOLEAN | Hears and validates a boolean (true/false) from the user. |
TALK "Age received: " + age.
HEAR agree AS BOOLEAN| +| HEAR _variable_ AS HOUR | Hears and validates an hour from the user. |
TALK "Agreement status: " + agree.
HEAR hour AS HOUR| +| HEAR _variable_ AS MONEY | Hears and validates a monetary amount from the user. |
TALK "Hour received: " + hour.
HEAR amount AS MONEY| +| HEAR _variable_ AS MOBILE | Hears and validates a mobile number from the user. |
TALK "Amount received: " + amount.
HEAR mobile AS MOBILE| +| HEAR _variable_ AS ZIPCODE | Hears and validates a ZIP code from the user. |
TALK "Mobile number received: " + mobile.
HEAR zipcode AS ZIPCODE| +| HEAR _variable_ AS "Abacate", "Maçã", "Morango" | Displays the specified menu and waits for user selection. |
TALK "ZIP Code received: " + zipcode.
HEAR fruit AS "Abacate", "Maçã", "Morango"| +| HEAR _variable_ AS LANGUAGE | Hears and validates a language code from the user. |
TALK "You selected: " + fruit.
HEAR language AS LANGUAGE| +| HEAR _variable_ AS LOGIN (internal) | Waits for Active Directory login integration before proceeding. |
TALK "Language selected: " + language.
HEAR user AS LOGIN| ## Data Handling -| Instruction / Usage | Description | Example | -| ------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- | -| _variable_ = GET "_file_.xlsx", "_A1:A1_" | Gets the value of the cell specified in range address |
TALK "User logged in: " + user.
name = GET "data.xlsx", "A1:A1"| -| SET "_file_.xlsx", "_A1:A1_", 42 | Sets the value of the cell specified in range address |
TALK "The value is " + name.
SET "data.xlsx", "A1:A1", 42| -| _variable_ = GET "https://server/query" | Gets the value from the specified web service |
TALK "Value set in Excel."
result = GET "https://api.example.com/data"| -| POST "https://", _data_ | Sends data to the specified URL |
TALK "Data received: " + result.
POST "https://api.example.com/submit", "data"| -| 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 |
TALK "Data posted successfully."
data = FIND "sales_data.xlsx", "A1:B10"| -| file = data AS IMAGE | Converts a two-dimensional array into an image file. |
result = SELECT product, SUM(amount) AS total FROM data GROUP BY product
TALK "Query result: " + result.
file = data AS IMAGE| -| file = data AS PDF | Converts a two-dimensional array into a PDF file. |
SAVE file AS "sales_chart.png"
TALK "Chart saved as image."
file = data AS PDF| -| NEW OBJECT | Creates a new object to be used with REST calls. |
SAVE file AS "sales_report.pdf"
TALK "Report saved as PDF."
data = NEW OBJECT| -| NEW ARRAY | Creates a new array. |
data.color = "blue"
TALK "New object created."
data = NEW ARRAY| -| QRCODE | Creates a QR code from specified text. |
data[0] = "red"
TALK "New array created."
file = QRCODE "https://example.com"| -| FORMAT value, format | Formats a value according to the specified format. |
SAVE file AS "qrcode.png"
TALK "QR Code generated."
d = FORMAT today, "YYYY-MM-dd"| -| ADD NOTE | Adds a note to a file named Notes.xls of .gbdata. |
TALK "Formatted date: " + d.
ADD NOTE "This is a new note."| -| ALLOW ROLE | Check if role specified in People sheet (.gbdata) will have access. |
TALK "Note added."
ALLOW ROLE "Admin"| +| Instruction / Usage | Description | Example | +| ------------------------------------------------- | -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| _variable_ = GET "_file_.xlsx", "_A1:A1_" | Gets the value of the cell specified in range address |
TALK "Role access granted."
name = GET "data.xlsx", "A1:A1"| +| SET "_file_.xlsx", "_A1:A1_", 42 | Sets the value of the cell specified in range address |
TALK "The value is " + name.
SET "data.xlsx", "A1:A1", 42| +| _variable_ = GET "https://server/query" | Gets the value from the specified web service |
TALK "Value set in Excel."
result = GET "https://api.example.com/data"| +| POST "https://", _data_ | Sends data to the specified URL |
TALK "Data received: " + result.
POST "https://api.example.com/submit", "data"| +| 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 |
TALK "Data posted successfully."
data = FIND "sales_data.xlsx", "A1:B10"| +| file = data AS IMAGE | Converts a two-dimensional array into an image file. |
result = SELECT product, SUM(amount) AS total FROM data GROUP BY product
TALK "Query result: " + result.
file = data AS IMAGE| +| file = data AS PDF | Converts a two-dimensional array into a PDF file. |
SAVE file AS "sales_chart.png"
TALK "Chart saved as image."
file = data AS PDF| +| NEW OBJECT | Creates a new object to be used with REST calls. |
SAVE file AS "sales_report.pdf"
TALK "Report saved as PDF."
data = NEW OBJECT| +| NEW ARRAY | Creates a new array. |
data.color = "blue"
TALK "New object created."
data = NEW ARRAY| +| QRCODE | Creates a QR code from specified text. |
data[0] = "red"
TALK "New array created."
file = QRCODE "https://example.com"| +| FORMAT value, format | Formats a value according to the specified format. |
SAVE file AS "qrcode.png"
TALK "QR Code generated."
d = FORMAT today, "YYYY-MM-dd"| +| ADD NOTE | Adds a note to a file named Notes.xls of .gbdata. |
TALK "Formatted date: " + d.
ADD NOTE "This is a new note."| +| ALLOW ROLE | Check if role specified in People sheet (.gbdata) will have access. |
TALK "Note added."
ALLOW ROLE "Admin"| ## Web Automation -| Instruction / Usage | Description | Example | -| ------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- | -| page = OPEN _url_ [AS #namedSession] | Web automation retrieval of a web page, saving the session for reuse. |
TALK "Role access granted."
page = OPEN "https://example.com" AS #session1| -| * _variable_ = GET page, cssSelector, "body > img" | Retrieves an element within an IFRAME specified by selector. |
TALK "Page opened and session saved."
image = GET page, "#profile-picture"| -| * SET page, cssSelector, value | Defines a field to a value on the webpage specified by selector. |
TALK "Profile picture retrieved."
SET page, "#username", "user123"| -| * CLICK page, cssSelector | Clicks on an element inside the web page being automated. |
TALK "Username set."
CLICK page, "#submit-button"| -| * file = DOWNLOAD _url_ | Downloads a file from the specified URL. |
TALK "Submit button clicked."
file = DOWNLOAD "https://example.com/file.zip"| +| Instruction / Usage | Description | Example | +| --------------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| page = OPEN _url_ [AS #namedSession] | Web automation retrieval of a web page, saving the session for reuse. |
SAVE file AS "downloads/file.zip"
TALK "File downloaded."
page = OPEN "https://example.com" AS #session1| +| \* _variable_ = GET page, cssSelector, "body > img" | Retrieves an element within an IFRAME specified by selector. |
TALK "Page opened and session saved."
image = GET page, "#profile-picture"| +| \* SET page, cssSelector, value | Defines a field to a value on the webpage specified by selector. |
TALK "Profile picture retrieved."
SET page, "#username", "user123"| +| \* CLICK page, cssSelector | Clicks on an element inside the web page being automated. |
TALK "Username set."
CLICK page, "#submit-button"| +| \* file = DOWNLOAD _url_ | Downloads a file from the specified URL. |
TALK "Submit button clicked."
file = DOWNLOAD "https://example.com/file.zip"| ## File Management -| Instruction / Usage | Description | Example | -| ------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- | -| HEAR _variable_ AS FILE | Returns a file uploaded by the user to be saved. |
SAVE file AS "downloads/file.zip"
TALK "File downloaded."
HEAR file AS FILE| -| HEAR _variable_ AS AUDIO | Returns an audio file uploaded by the user to be saved. |
SAVE file AS "uploads/myfile.pdf"
TALK "File uploaded and saved."
HEAR audio AS AUDIO| -| INCLUDE file | Includes a file into .gbdialog. |
SAVE audio AS "recordings/audiofile.mp3"
TALK "Audio received and saved."
INCLUDE "script.gbdialog"| -| UPLOAD file | Uploads a file to a storage blob, like Azure Storage. |
TALK "File included."
UPLOAD " +| Instruction / Usage | Description | Example | +| ------------------------ | ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| HEAR _variable_ AS FILE | Returns a file uploaded by the user to be saved. |HEAR file AS FILE| +| HEAR _variable_ AS AUDIO | Returns an audio file uploaded by the user to be saved. |
SAVE file AS "uploads/myfile.pdf"
TALK "File uploaded and saved."HEAR audio AS AUDIO| +| INCLUDE file | Includes a file into .gbdialog. |
SAVE audio AS "recordings/audiofile.mp3"
TALK "Audio received and saved."INCLUDE "script.gbdialog"| +| UPLOAD file | Uploads a file to a storage blob, like Azure Storage. |
TALK "File included."UPLOAD " | path/to/file.pdf"| -| DIR path | Returns a list of files in the specified directory. |
TALK "File uploaded to cloud storage."files = DIR "uploads/"| -| FILL | Fills data into a Word document to be exported as images. |
TALK "Files in directory: " + files.FILL "template.docx", data| -| SAVE _variable_ AS "path/file" | Saves the specified variable as a file at the given path. |
TALK "Document filled and exported."SAVE file AS "path/to/save/file.pdf"| +| DIR path | Returns a list of files in the specified directory. |
TALK "File saved."files = DIR "uploads/"| +| FILL | Fills data into a Word document to be exported as images. |
TALK "Files in directory: " + files.FILL "template.docx", data| +| SAVE _variable_ AS "path/file" | Saves the specified variable as a file at the given path. |
TALK "Document filled and exported."SAVE file AS "path/to/save/file.pdf"| ## Advanced Operations -| Instruction / Usage | Description | Example | -| ------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- | -| TABLE name ON connection | Defines a TABLE on the specified storage (database) connection. |
TALK "File saved."TABLE "Sales" ON "DBConnection"| -| field AS dataType | Defines a field in TABLE. Eg.: name string(50). |
TALK "Table defined."field = "price" AS number(10,2)| -| CONTINUATION TOKEN | Returns the value of the continuation token associated with the current dialog. |
TALK "Field defined as number."token = CONTINUATION TOKEN| -| NEW OBJECT | Creates a new object to be used with REST calls. |
TALK "Continuation token: " + token.data = NEW OBJECT| -| NEW ARRAY | Creates a new array. |
data.color = "blue"
TALK "New object created."data = NEW ARRAY| +| Instruction / Usage | Description | Example | +| ------------------------ | ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| TABLE name ON connection | Defines a TABLE on the specified storage (database) connection. |
data[0] = "red"
TALK "New array created."TABLE "Sales" ON "DBConnection"| +| field AS dataType | Defines a field in TABLE. Eg.: name string(50). |
TALK "Table defined."field = "price" AS number(10,2)| +| CONTINUATION TOKEN | Returns the value of the continuation token associated with the current dialog. |
TALK "Field defined as number."token = CONTINUATION TOKEN| +| NEW OBJECT | Creates a new object to be used with REST calls. |
TALK "Continuation token: " + token.data = NEW OBJECT| +| NEW ARRAY | Creates a new array. |
data.color = "blue"
TALK "New object created."data = NEW ARRAY| + ``` @@ -118,30 +117,32 @@ All values from .gbot Config.xlsx are also provided as variables, so it can be a | 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 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. | +| 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 +### 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 @@ -157,146 +158,144 @@ TALK "Hello." ### Using General Bots Web Automation to ask humans about unreadable captchas ```BASIC -mobile = "5521000000000" +mobile = "5521000000000" -page = GET HTML "https://www.any-website.com/" -SET page, "#usuario", "user" -SET page, "#j_password", "xxxxxxxxxxx" +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." -``` +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. ```BASIC -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 +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 ```BASIC -data = [10, 20, 30] -legends= "Steve;Yui;Carlos" -img = CHART "pie", data, legends -SEND FILE img -SAVE img as "folder/filename.jpg" +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 ```basic -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 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 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 -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 ```BASIC -TALK "General Bots Labs presents FISCAL DATA SHOW BY BASIC" +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 "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)" -TALK "Demonstration of Gift Contributions with AS IMAGE keyword" -SET THEME dark -png = data as IMAGE -SEND FILE png +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) -DELAY 5 -TALK " Demonstration of Gift Contributions CHART keyword" - img = CHART "bar", data -SEND FILE img +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 +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 ```BASIC -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 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. +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 +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. +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 +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 @@ -311,14 +310,14 @@ Given the Excel file with the following contents and saved to the standard .gbdi The Word bellow will invoke POST call by using line contents as object attributes: -``` BASIC +```BASIC 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. +- 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 @@ -340,7 +339,6 @@ hear one of subscriptions with email, password into subscriptionId talk "The subscription selected was: " + subscriptionId ``` - # General Bots Simple and Complex Programs These are sample programs in General Bots BASIC, each presented with a modern and engaging approach. The first 20 examples are simple, while the next 20 delve into more advanced concepts. Check the list @@ -348,8 +346,8 @@ of [templates](https://github.com/GeneralBots/BotServer/tree/main/templates) The set of 20 advanced General Bots BASIC programs that integrate web services, web automation, file handling, and dynamic interactions. These samples are designed to showcase the full potential of General Bots BASIC for advanced users. These advanced samples illustrate a range of functionalities that can be implemented with General Bots BASIC, from data manipulation and web automation to dynamic content generation and complex file handling. - ## 1. **Retrieve and Save Web Data to Excel** + ```basic GET "https://api.example.com/data" data = result.data @@ -358,6 +356,7 @@ TALK "Data retrieved and saved to data.xlsx successfully!" ``` ## 2. **Automated Web Form Submission** + ```basic OPEN "https://example.com/form" SET page, "#name", "John Doe" @@ -368,6 +367,7 @@ TALK "Form submitted successfully!" ``` ## 3. **Generate and Save Dynamic Report as PDF** + ```basic data = FIND "report_data.xlsx", "A1:C10" pdf = data AS PDF @@ -376,6 +376,7 @@ TALK "Dynamic report generated and saved as report.pdf!" ``` ## 4. **Create and Upload Image from Data** + ```basic data = [10, 20, 30, 40] labels = "Q1;Q2;Q3;Q4" @@ -385,6 +386,7 @@ TALK "Chart image generated and uploaded!" ``` ## 5. **Automate GitHub Issue Creation from Spreadsheet** + ```basic list = FIND "issues.xlsx" index = 1 @@ -401,6 +403,7 @@ LOOP ``` ## 6. **Extract and Save Web Page Content** + ```basic OPEN "https://example.com/page" content = GET page, "body" @@ -409,6 +412,7 @@ TALK "Page content saved as page_content.txt!" ``` ## 7. **Interactive Poll Results Analysis** + ```basic HEAR poll_data AS FILE data = LOAD poll_data @@ -418,6 +422,7 @@ TALK "Poll results analyzed and saved to poll_analysis.xlsx!" ``` ## 8. **Send User-Specific Notifications** + ```basic list = FIND "users.xlsx", "Notify=Y" index = 1 @@ -430,6 +435,7 @@ TALK "Notifications sent to all users." ``` ## 9. **Automate Data Entry into Web Application** + ```basic OPEN "https://example.com/data-entry" SET page, "#field1", "Value1" @@ -440,6 +446,7 @@ TALK "Data entry completed successfully!" ``` ## 10. **Generate and Save QR Codes for Multiple URLs** + ```basic urls = ["https://example1.com", "https://example2.com", "https://example3.com"] index = 1 @@ -452,6 +459,7 @@ TALK "QR codes generated and saved!" ``` ## 11. **Automate Google Calendar Event Creation** + ```basic OPEN "https://calendar.google.com/calendar/u/0/r?tab=mc&pli=1" HEAR event_date AS DATE @@ -464,6 +472,7 @@ TALK "Event created on Google Calendar for " + event_date ``` ## 12. **Send Customized Reports to a List of Recipients** + ```basic data = FIND "reports.xlsx" index = 1 @@ -477,6 +486,7 @@ TALK "Reports sent to all recipients." ``` ## 13. **Create and Save Dynamic Chart with User Input** + ```basic HEAR user_data AS "10,20,30,40" data = SPLIT(user_data, ",") @@ -486,6 +496,7 @@ TALK "Dynamic chart created and saved as dynamic_chart.png!" ``` ## 14. **Extract and Save Image Metadata** + ```basic SEE TEXT OF "https://example.com/image.jpg" AS metadata SAVE "image_metadata.txt", metadata @@ -493,6 +504,7 @@ TALK "Image metadata extracted and saved as image_metadata.txt!" ``` ## 15. **Automate Form Filling Based on Data from Excel** + ```basic data = FIND "form_data.xlsx", "A1:C1" OPEN "https://example.com/form" @@ -504,6 +516,7 @@ TALK "Form filled and submitted based on Excel data!" ``` ## 16. **Generate PDF from Dynamic SQL Query Results** + ```basic data = FIND "database.xlsx", "A1:C100" query = SELECT name, age, city FROM data WHERE age > 30 @@ -513,6 +526,7 @@ TALK "PDF report generated and saved!" ``` ## 17. **Capture and Save Web Page Screenshot with Timestamp** + ```basic timestamp = FORMAT NOW(), "YYYY-MM-DD_HH-MM-SS" OPEN "https://example.com" @@ -522,6 +536,7 @@ TALK "Screenshot captured and saved with timestamp!" ``` ## 18. **Handle and Save User-Uploaded Files** + ```basic HEAR user_file AS FILE SAVE user_file AS "uploads/user_file_" + FORMAT NOW(), "YYYY-MM-DD_HH-MM-SS" + ".pdf" @@ -529,6 +544,7 @@ TALK "File uploaded and saved successfully!" ``` ## 19. **Extract Data from Web Page and Save to Excel** + ```basic OPEN "https://example.com/data-page" data = GET page, "#data-table" @@ -537,6 +553,7 @@ TALK "Data extracted from web page and saved to web_data.xlsx!" ``` ## 20. **Perform Complex Data Analysis and Save Results** + ```basic data = FIND "complex_data.xlsx", "A1:D100" analysis = SELECT category, SUM(amount) AS total FROM data GROUP BY category @@ -544,35 +561,39 @@ SAVE "data_analysis.xlsx", "A1:B" + UBOUND(analysis), analysis TALK "Data analysis completed and saved to data_analysis.xlsx!" ``` - -And even more simple examples can be seen in this list as begginers use BASIC +And even more simple examples can be seen in this list as begginers use BASIC to understand code: ## 1. Welcome Message + ```basic HEAR name AS NAME TALK "Hey " + name + ", welcome to our awesome service! 🎉" ``` ## 2. Simple Password Generator + ```basic GENERATE A PASSWORD TALK "Your new password is: " + password ``` ## 3. Remind User to Take a Break + ```basic WAIT 3600 TALK "You've been working for an hour! Remember to take a break and stretch! 💪" ``` ## 4. Get User's Favorite Fruit + ```basic HEAR fruit AS "Apple", "Banana", "Cherry" TALK "Nice choice! " + fruit + " is a great fruit! 🍓" ``` ## 5. Send a Calendar Invite + ```basic HEAR email AS EMAIL HEAR date AS DATE @@ -581,6 +602,7 @@ SEND MAIL email, "Calendar Invite", "You are invited to an event on " + date ``` ## 6. Generate and Send QR Code + ```basic HEAR url AS "https://example.com" file = QRCODE url @@ -589,6 +611,7 @@ TALK "Here is your QR code for the URL: " + url ``` ## 7. Weather Update + ```basic GET "https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=YOUR_LOCATION" data = result.current @@ -596,12 +619,14 @@ TALK "The current temperature is " + data.temp_c + "°C with " + data.condition. ``` ## 8. Todo List Reminder + ```basic HEAR task AS STRING TALK "Got it! I'll remind you about: " + task ``` ## 9. Send Motivational Quote + ```basic quotes = ["Keep going!", "You got this!", "Believe in yourself!"] index = RANDOM(0, 2) @@ -609,6 +634,7 @@ TALK quotes[index] ``` ## 10. Capture and Send Screenshot + ```basic OPEN "https://example.com" file = SCREENSHOT "body" @@ -617,12 +643,14 @@ TALK "Here's a screenshot of the page." ``` ## 11. Daily Affirmation + ```basic HEAR user AS NAME TALK "Good morning " + user + "! Remember, today is going to be amazing! 🌟" ``` ## 12. Send a Joke + ```basic jokes = ["Why don’t scientists trust atoms? Because they make up everything!", "Why did the scarecrow win an award? Because he was outstanding in his field!"] index = RANDOM(0, 1) @@ -630,18 +658,21 @@ TALK jokes[index] ``` ## 13. User Poll + ```basic HEAR choice AS "Option 1", "Option 2", "Option 3" TALK "You selected " + choice + ". Thanks for your input! 🗳️" ``` ## 14. Image Caption Extraction + ```basic SEE CAPTION OF "https://example.com/image.jpg" AS caption TALK "The caption of the image is: " + caption ``` ## 15. Send Reminder Email + ```basic HEAR email AS EMAIL HEAR reminder AS STRING @@ -649,12 +680,14 @@ SEND MAIL email, "Reminder", "Just a friendly reminder: " + reminder ``` ## 16. Capture Text from Image + ```basic SEE TEXT OF "https://example.com/image-with-text.jpg" AS text TALK "The text from the image is: " + text ``` ## 17. Add a Note + ```basic HEAR note AS STRING ADD NOTE note @@ -662,6 +695,7 @@ TALK "Note added: " + note ``` ## 18. Generate Dynamic Chart + ```basic data = [5, 15, 25] labels = "Red;Green;Blue" @@ -671,6 +705,7 @@ TALK "Here’s your dynamic chart!" ``` ## 19. Create and Send PDF Report + ```basic data = FIND "data.xlsx", "A1:B10" pdf = data AS PDF @@ -679,6 +714,7 @@ TALK "Here's your report in PDF format." ``` ## 20. Interactive Game + ```basic TALK "Guess a number between 1 and 10." HEAR guess AS INTEGER @@ -687,4 +723,5 @@ IF guess == 7 ELSE TALK "Oops! Try again next time!" ``` + These examples demonstrate various capabilities of the language, from simple text manipulation to more complex tasks like image processing.
data[0] = "red"
TALK "New array created."