Difference between revisions of "HTTP API/Examples/Requesting bot balance"

From SmartBots Developers Docs
Jump to: navigation, search
(Created page with "{{DISPLAYTITLE: Group Invite}} This scripts requests the bot's avatar balance from LSL. It also demonstrates how to parse HTTP API replies. <syntaxhighlight lang="lsl"> str...")
 
Line 1: Line 1:
{{DISPLAYTITLE: Group Invite}}
+
{{DISPLAYTITLE:{{SUBPAGENAME}}}}
  
 
This scripts requests the bot's avatar balance from LSL. It also demonstrates how to parse HTTP API replies.
 
This scripts requests the bot's avatar balance from LSL. It also demonstrates how to parse HTTP API replies.

Revision as of 08:58, 23 December 2016


This scripts requests the bot's avatar balance from LSL. It also demonstrates how to parse HTTP API replies.

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) {
    list params = llParseString2List(content,["&"],[]);
    integer index = ~llGetListLength(params);

    list keys;
    list values;

    // Loop through the parameters.
    while (++index) {
        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 "";
    }
}


default {
    // When the owner touches the object.
    touch_start(integer total_number) {
        if(llDetectedKey(0) != llGetOwner()) {
            llInstantMessage(llDetectedKey(0), "Only my owner can use me!");
            return;
        }

        //Set up the parameters we'll send to SmartBots.
        string params = llDumpList2String([
            "action="  + "get_balance",
            "apikey="  + llEscapeURL(sbApiKey),
            "botname=" + llEscapeURL(sbBotName),
            "secret="  + llEscapeURL(sbBotAccessCode)
        ], "&");
    
        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) {
        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(result=="FAIL") {
            // If the command failed.
            llOwnerSay("Command '"+action+"' failed: "+resulttext);

        } else {
            // If the command was a success.
            llOwnerSay("Your bot's balance is L$" + balance);
        }
    }
}