Difference between revisions of "HTTP API/Bot Commands/get balance"
From SmartBots Developers Docs
(Edited to use get_post_value() as seen on http://wiki.secondlife.com/wiki/Http_response) |
|||
| Line 27: | Line 27: | ||
key httpReq=NULL_KEY; | key httpReq=NULL_KEY; | ||
| − | + | //Get posted data's value. | |
| + | //This function is from http://wiki.secondlife.com/wiki/Http_response | ||
| + | string get_post_value(string content, string returns) { | ||
| + | //Get the parameters and number of parameters. | ||
| + | list params = llParseString2List(content,["&"],[]); | ||
| + | integer index = ~llGetListLength(params); | ||
| − | + | //Create list for our information. | |
| − | + | list keys; | |
| − | + | list values; | |
| − | + | //Loop through the parameters. | |
| − | + | while (++index) { | |
| − | + | //Add the parameters to our list. | |
| − | + | list parsedParams = llParseString2List(llList2String(params, index), ["="], []); | |
| + | keys += llUnescapeURL(llList2String(parsedParams, 0)); | ||
| + | values += llUnescapeURL(llList2String(parsedParams, 1)); | ||
| + | } | ||
| + | |||
| + | //Return our parameter or "FAIL". | ||
| + | integer found = llListFindList(keys, [returns]); | ||
| + | if(~found) { | ||
| + | return llList2String(values, found); | ||
| + | } else { | ||
| + | return "FAIL"; | ||
| + | } | ||
| + | } | ||
| − | httpReq=llHTTPRequest("http://api.mysmartbots.com/api/bot.html", | + | default { |
| − | + | ||
| + | //When the owner touches the object. | ||
| + | touch_start(integer total_number) { | ||
| + | //If it's not the owner touching the object. | ||
| + | if(llDetectedKey(0) != llGetOwner()) { | ||
| + | llInstantMessage(llDetectedKey(0), "Only my owner can use me!"); | ||
| + | |||
| + | //If it is the owner touching the object. | ||
| + | } else { | ||
| + | //Set up the parameters we'll send to SmartBots. | ||
| + | string params = llDumpList2String([ | ||
| + | "action=" + "get_balance", | ||
| + | "apikey=" + llEscapeURL(sbApiKey), | ||
| + | "botname=" + llEscapeURL(sbBotName), | ||
| + | "secret=" + llEscapeURL(sbBotAccessCode) | ||
| + | ], "&"); | ||
| + | |||
| + | //Send the POST request to SmartBots. | ||
| + | httpReq=llHTTPRequest("http://api.mysmartbots.com/api/bot.html", [HTTP_METHOD,"POST"], params); | ||
| + | } | ||
} | } | ||
| − | // | + | //Get the SmartBots reply from the server. |
http_response(key request_id, integer status, list metadata, string body) { | http_response(key request_id, integer status, list metadata, string body) { | ||
| + | |||
| + | //Return if this is not our request. | ||
if(request_id!=httpReq) return; | if(request_id!=httpReq) return; | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | // Parse | + | //Parse the SmartBots reply. |
| − | + | string action = get_post_value(body, "action"); | |
| − | + | string result = get_post_value(body, "result"); | |
| − | + | string resulttext = get_post_value(body, "resulttext"); | |
| − | + | string balance = get_post_value(body, "balance"); | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | //If the command failed. | ||
if(result=="FAIL") { | if(result=="FAIL") { | ||
| + | //Tell the owner why the command has failed. | ||
llOwnerSay("Command '"+action+"' failed: "+resulttext); | llOwnerSay("Command '"+action+"' failed: "+resulttext); | ||
| + | |||
| + | //If the command was a success. | ||
} else { | } else { | ||
//Say the bot's balance. | //Say the bot's balance. | ||
| − | llOwnerSay("Your bot has L$" + | + | llOwnerSay("Your bot has L$" + balance + " in it's account!"); |
} | } | ||
} | } | ||
Revision as of 08:23, 23 December 2016
Returns avatar L$ balance.
Variables
The following table shows input values (you send them with the API call) and returned output values.
| Variable | Required | Description | ||
|---|---|---|---|---|
| Input basic parameters: | ||||
| action | yes | = get_balance | ||
| apikey | yes | Your personal developer's API key. | ||
| botname | yes | Your bot's SL login. | ||
| secret | yes | Bot access code of your bot. | ||
| dataType | optional | Set to "json" to get JSON reply instead of URL-encoded string | ||
| custom | optional | The custom data (string) to be passed back to caller script. This value will be returned back to the caller in HTTP response. | ||
| Input: | ||||
| command takes no input parameters | ||||
| Output: | ||||
| (to be received in http_response LSL event, see docs for details) | ||||
| result | OK - command completed successfully FAIL - command failed | |||
| resulttext | Detailed reason for the failure. | |||
| custom | The value from input "custom" parameter. See above. | |||
| balance | The balance of the bot | |||
Example
Requesting the avatar's balance from LSL:
string sbApiKey="...";
string sbBotName="OneSmartBot Resident";
string sbBotAccessCode="...";
key httpReq=NULL_KEY;
//Get posted data's value.
//This function is from http://wiki.secondlife.com/wiki/Http_response
string get_post_value(string content, string returns) {
//Get the parameters and number of parameters.
list params = llParseString2List(content,["&"],[]);
integer index = ~llGetListLength(params);
//Create list for our information.
list keys;
list values;
//Loop through the parameters.
while (++index) {
//Add the parameters to our list.
list parsedParams = llParseString2List(llList2String(params, index), ["="], []);
keys += llUnescapeURL(llList2String(parsedParams, 0));
values += llUnescapeURL(llList2String(parsedParams, 1));
}
//Return our parameter or "FAIL".
integer found = llListFindList(keys, [returns]);
if(~found) {
return llList2String(values, found);
} else {
return "FAIL";
}
}
default {
//When the owner touches the object.
touch_start(integer total_number) {
//If it's not the owner touching the object.
if(llDetectedKey(0) != llGetOwner()) {
llInstantMessage(llDetectedKey(0), "Only my owner can use me!");
//If it is the owner touching the object.
} else {
//Set up the parameters we'll send to SmartBots.
string params = llDumpList2String([
"action=" + "get_balance",
"apikey=" + llEscapeURL(sbApiKey),
"botname=" + llEscapeURL(sbBotName),
"secret=" + llEscapeURL(sbBotAccessCode)
], "&");
//Send the POST request to SmartBots.
httpReq=llHTTPRequest("http://api.mysmartbots.com/api/bot.html", [HTTP_METHOD,"POST"], params);
}
}
//Get the SmartBots reply from the server.
http_response(key request_id, integer status, list metadata, string body) {
//Return if this is not our request.
if(request_id!=httpReq) return;
//Parse the SmartBots reply.
string action = get_post_value(body, "action");
string result = get_post_value(body, "result");
string resulttext = get_post_value(body, "resulttext");
string balance = get_post_value(body, "balance");
//If the command failed.
if(result=="FAIL") {
//Tell the owner why the command has failed.
llOwnerSay("Command '"+action+"' failed: "+resulttext);
//If the command was a success.
} else {
//Say the bot's balance.
llOwnerSay("Your bot has L$" + balance + " in it's account!");
}
}
}
<< return back to Bot commands
(Miss an API call or parameter? Submit your request in forum)