diff --git a/blockly/iot/IOT_Blocks.js b/blockly/iot/IOT_Blocks.js index c4d0194..4591293 100644 --- a/blockly/iot/IOT_Blocks.js +++ b/blockly/iot/IOT_Blocks.js @@ -138,6 +138,23 @@ Blockly.Blocks['publish_message'] = { } }; +Blockly.Blocks['publish_project_message'] = { + init: function() { + this.setColour(message_HUE); + this.appendDummyInput().appendField(Blockly.Msg.TEXT_APPEND_TO); + this.appendValueInput("project").setCheck("String"); + this.appendDummyInput().appendField(Blockly.Msg.VARIABLES_DEFAULT_NAME); + this.appendValueInput("topic").setCheck("String"); + this.appendDummyInput().appendField(Blockly.PUBLISH_MESSAGE); + this.appendValueInput("message").setCheck("String"); + this.appendDummyInput().appendField(Blockly.MESSAGE); + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(""); + } +}; + button_HUE = "#CFA45A"; Blockly.Blocks['button_down'] = { @@ -1720,4 +1737,58 @@ Blockly.Blocks['text2json'] = { this.setOutput(true, null); this.setTooltip(""); } +}; + +Blockly.Blocks['get_accessToken'] = { + init: function() { + this.setColour("#1cc88a"); + this.appendDummyInput().appendField(Blockly.USEAPIKEY); + this.appendValueInput("name").setCheck("String"); + this.appendDummyInput().appendField(Blockly.USESECRETKEY); + this.appendValueInput("name2").setCheck("String"); + this.appendDummyInput().appendField(Blockly.GETTOKEN); + this.setOutput(true, null); + this.setTooltip(""); + } +}; + +Blockly.Blocks['translate'] = { + init: function() { + this.setColour("#1cc88a"); + this.appendDummyInput().appendField(Blockly.TRANSORIGIN); + this.appendValueInput("name").setCheck("String"); + this.appendDummyInput().appendField(Blockly.USETEXT); + this.appendValueInput("name2").setCheck("String"); + this.appendDummyInput().appendField(Blockly.TOLANG); + this.appendValueInput("name3").setCheck("String"); + this.appendDummyInput().appendField(Blockly.PARA1); + this.setInputsInline(true); + this.appendStatementInput('DO0').appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(''); + }, + getVars:function(){ + return ["result"]; + } +}; + +Blockly.Blocks['chat'] = { + init: function() { + this.setColour("#1cc88a"); + this.appendDummyInput().appendField(Blockly.TRANSORIGIN); + this.appendValueInput("name").setCheck("String"); + this.appendDummyInput().appendField(Blockly.USETEXT2); + this.appendValueInput("name2").setCheck("String"); + this.appendDummyInput().appendField(Blockly.BOT); + this.appendDummyInput().appendField(Blockly.PARA1); + this.setInputsInline(true); + this.appendStatementInput('DO0').appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(''); + }, + getVars:function(){ + return ["result"]; + } }; \ No newline at end of file diff --git a/blockly/iot/IOT_Generate.js b/blockly/iot/IOT_Generate.js index 0ccbda6..772af11 100644 --- a/blockly/iot/IOT_Generate.js +++ b/blockly/iot/IOT_Generate.js @@ -89,6 +89,14 @@ Blockly.JavaScript.publish_message=function(block) { return code; }; +Blockly.JavaScript.publish_project_message=function(block) { + var project = Blockly.JavaScript.valueToCode(this, 'project', Blockly.JavaScript.ORDER_ATOMIC); + var topic = Blockly.JavaScript.valueToCode(this, 'topic', Blockly.JavaScript.ORDER_ATOMIC); + var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC); + var code="propublish("+project+","+topic+","+message+")\n" + return code; +}; + Blockly.JavaScript.button_down=function(block) { var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC); var code="MixIO.getInstance("+name+",MixIO.typeTags.BUTTON)\n"+".bind(MixIO.eventTags.BUTTON_PRESSED, function(){\n" @@ -672,4 +680,99 @@ Blockly.JavaScript.text2json=function(block) { var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC); var code="JSON.parse("+name+")"; return [code, Blockly.JavaScript.ORDER_ATOMIC]; +}; + +Blockly.JavaScript.get_accessToken = function(block) { + MixIO.get_accessToken = function(client_id,client_secret){ + var accessToken = undefined; + $.ajax({ + type: 'POST', + url: 'proxy', + async: false, + data: { + 'url': 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+client_id+'&client_secret='+client_secret+'', + 'data':{ + } + }, + success: function(data) { + accessToken = data.access_token; + }, + error: function(xhr, type) { + MixIO.log(xhr); + } + }); + return accessToken; + } + + var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC); + var name2 = Blockly.JavaScript.valueToCode(this, 'name2', Blockly.JavaScript.ORDER_ATOMIC); + var code="MixIO.get_accessToken("+name+","+name2+")"; + return [code, Blockly.JavaScript.ORDER_ATOMIC]; +}; + +Blockly.JavaScript.translate = function(block) { + MixIO.translate = function(access_token, query, to, func){ + var result = undefined; + $.ajax({ + type: 'POST', + url: 'proxy', + data: { + 'url': 'https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token='+access_token+'', + 'data':{ + "from":"auto", + "to":to, + "q":query + } + }, + success: function(data) { + func(data) + }, + error: function(xhr, type) { + MixIO.log(xhr); + } + }); + } + + var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC); + var name2 = Blockly.JavaScript.valueToCode(this, 'name2', Blockly.JavaScript.ORDER_ATOMIC); + var name3 = Blockly.JavaScript.valueToCode(this, 'name3', Blockly.JavaScript.ORDER_ATOMIC); + var code="MixIO.translate("+name+","+name2+","+name3+")"; + var code="MixIO.translate("+name+","+name2+","+name3+",function(result){\n" + +Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n" + return code; +}; + +Blockly.JavaScript.chat = function(block) { + MixIO.chat = function(access_token, message, history, func){ + var result = undefined; + var allMessages = history; + allMessages.push({ + "role": "user", + "content": message + }) + $.ajax({ + type: 'POST', + url: 'proxy', + data: { + 'url': 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token='+access_token+'', + 'data':{ + "messages":allMessages + } + }, + success: function(data) { + func(data) + }, + error: function(xhr, type) { + MixIO.log(xhr); + } + }); + } + + var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC); + var name2 = Blockly.JavaScript.valueToCode(this, 'name2', Blockly.JavaScript.ORDER_ATOMIC); + var name3 = "[]"; + var code="MixIO.chat("+name+","+name2+","+name3+")"; + var code="MixIO.chat("+name+","+name2+","+name3+",function(result){\n" + +Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n" + return code; }; \ No newline at end of file diff --git a/blockly/msg/js/zh-hans.js b/blockly/msg/js/zh-hans.js index 4f4c3c1..dd2eaa9 100644 --- a/blockly/msg/js/zh-hans.js +++ b/blockly/msg/js/zh-hans.js @@ -311,6 +311,7 @@ Blockly.Msg["RENAME_VARIABLE"] = "重命名变量..."; Blockly.Msg["RENAME_VARIABLE_TITLE"] = "将所有“%1”变量重命名为:"; Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated Blockly.Msg["TEXT_APPEND_TITLE"] = "在%1之后加上文本%2"; +Blockly.Msg["TEXT_APPEND_TO"] = "向"; Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "将一些文本追加到变量“%1”里。"; Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "转为小写"; @@ -553,4 +554,15 @@ Blockly.GET_LATI = "获取当前纬度"; Blockly.GET_KEYBOARD_INPUT="文本输入的文本"; Blockly.JSON2TEXT = "字典转文本"; -Blockly.TEXT2JSON = "文本转字典"; \ No newline at end of file +Blockly.TEXT2JSON = "文本转字典"; + +Blockly.USEAPIKEY = "使用百度API Key"; +Blockly.USESECRETKEY = "和Secret Key"; +Blockly.GETTOKEN = "获取的Access Token"; + +Blockly.TRANSORIGIN = "使用Access Token"; +Blockly.USETEXT = "将文本"; +Blockly.USETEXT2 = "使用文本"; +Blockly.BOT = "与文心一言对话"; +Blockly.TOLANG = "翻译为"; +Blockly.PARA1 = ",参数: result"; \ No newline at end of file