UNPKG

adaptorex

Version:

Connect all your live interactive storytelling devices and software

992 lines 34.3 kB
{ "settings": { "type":"object", "title":"Telegram API Settings", "properties":{ "api_id":{ "type":"number", "title":"api id", "minLength":1, "required":true, "description":"create/find your API key on my.telegram.org" }, "api_hash":{ "type":"string", "title":"api hash", "required":true, "minLength":1, "description":"create/find your API hash on my.telegram.org" } } }, "collections": { "accounts": { "type": "object", "title": "Account", "description": "Control a Telegram account. Send messages from and receive messages to this account.", "required":["name","settings"], "options":{ "disable_edit_json":true, "disable_properties":true }, "properties": { "name":{ "type":"string", "pattern":"^[0-9A-Za-z_-]*$" }, "settings": { "type": "object", "description": "set the connection properties for this telegram account", "additionalProperties":false, "required": ["phone_number"], "properties": { "phone_number": { "type": "string", "title":"phone number", "pattern":"^[+][0-9]{7,20}$", "required": true, "description": "The telegram accounts phone number in the format +49123456789." }, "password": { "type":"string", "title":"password", "format":"password", "description":"enter password if account is password protected" }, "level":{ "title":"default level", "type":"string", "description":"Define level, that is used, once this account is contacted and no session registered a routing for the contacting chat.", "enum":[] }, "chat_argument":{ "title":"chat level argument", "type":"string", "default":"Player" }, "test":{ "type":"boolean", "title":"test", "description":"set true if this is supposed to be a test account" } } }, "telegram":{"$ref":"#/definitions/telegram_peer"}, "chats": { "type": "array", "format":"table", "options": { "collapsed":true, "disable_array_add": true, "disable_array_delete": true, "disable_array_delete_all_rows":true, "disable_array_delete_last_row":true, "disable_array_reorder":true }, "items":{ "type":"string", "readonly": true } } } }, "bots": { "type": "object", "title": "Bot", "description": "Control a Telegram Bot. Send messages from and receive messages to this bot.", "required":["name","settings"], "options":{ "disable_edit_json":true, "disable_properties":true }, "properties": { "name":{ "type":"string", "pattern":"^[0-9A-Za-z_-]*$" }, "settings": { "type": "object", "description": "set the connection properties for this telegram account", "additionalProperties":false, "required": ["token"], "properties": { "token": { "type": "string", "title":"bot api token", "description": "The telegram bot token you received when creating the bot e.g. via @BotFather." }, "level":{ "title":"default level", "type":"string", "description":"Define level, that is used, once this account is contacted and no session registered a routing for the contacting chat.", "enum":[] }, "chat_argument":{ "title":"chat level argument", "type":"string", "default":"Player" } } }, "telegram":{"$ref":"#/definitions/telegram_peer"}, "chats": { "type": "array", "format":"table", "options": { "collapsed":true, "disable_array_add": true, "disable_array_delete": true, "disable_array_delete_all_rows":true, "disable_array_delete_last_row":true, "disable_array_reorder":true }, "items":{ "type":"string", "readonly": true } } } } }, "data_variables":{ "players":{ "telegram":{ "type":"object", "properties":{ "first_name":{"type":"string"}, "last_name":{"type":"string"}, "id":{"type":"integer"}, "phone":{"type":"string"}, "username":{"type":"string"}, "type":{"type":"string"}, "bot":{"type":"boolean"} } } }, "chats":{ "name":{"type":"string"}, "title":{"type":"string"}, "members":{ "type":"array", "items":{ "type":"integer" } }, "member_count":{ "type":"integer" }, "admin":{"type":"string"}, "telegram":{ "type":"object", "properties":{ "date":{"type":"string"}, "id":{"type":"integer"}, "participants_count":{"type":"integer"}, "title":{"type":"string"} } }, "polls":{ "type":"object", "additionalProperties":{ "type":"object" } } } }, "action_variables":{ "onMessage":{ "text":{"type":"string"}, "media":{"type":"string"}, "match":{"type":"string"}, "id": {"type":"integer"}, "date":{"type":"string"}, "from_id":{"type":"integer"}, "to_id":{"type":"integer"}, "peer_type":{"type":"string"}, "peer":{"type":"integer"}, "download":{"type":"object"}, "lat":{"type":"number"}, "long":{"type":"number"} }, "buttons":{ "button":{"type":"string"}, "match":{"type":"string"}, "id": {"type":"integer"}, "date":{"type":"string"}, "from_id":{"type":"integer"}, "to_id":{"type":"integer"}, "peer_type":{"type":"string"}, "peer":{"type":"integer"} } }, "definitions":{ "telegram_agent":{ "title":"Telegram Account", "propertyOrder":1, "type":"string", "required":true, "enum":[], "isAdaptorContent":false }, "telegram_peer":{ "type":"object", "additionalProperties":false, "options":{ "disable_edit_json":true, "disable_properties":true }, "properties":{ "first_name":{"type":"string", "readonly": true}, "last_name":{"type":"string", "readonly": true}, "id":{"type":"integer", "readonly": true}, "phone":{"type":"string", "readonly": true}, "username":{"type":"string", "readonly": true}, "type":{"type":"string", "readonly": true}, "bot":{"type":"boolean", "readonly": true} } }, "permissions": { "type":"object", "description":"Assign or limit permissions for non admin group members. Setting a value to false, forbids this option.", "properties":{ "view_messages":{ "type":"boolean", "format":"checkbox", "default":true, "title":"View messages" }, "send_messages":{ "type":"boolean", "format":"checkbox", "default":true, "title":"Send messages" }, "send_media":{ "type":"boolean", "format":"checkbox", "default":true, "title":"Send media" }, "send_stickers":{ "type":"boolean", "format":"checkbox", "default":true, "title":"Send stickers" }, "send_gifs":{ "type":"boolean", "format":"checkbox", "default":true, "title":"Send GIFs" }, "send_games":{ "type":"boolean", "format":"checkbox", "default":true, "title":"Send games" }, "send_inline":{ "type":"boolean", "format":"checkbox", "default":true, "title":"Use inline bots" }, "send_polls":{ "type":"boolean", "format":"checkbox", "default":true, "title":"Send polls" }, "change_info":{ "type":"boolean", "format":"checkbox", "default":true, "title":"Change group info" }, "invite_users":{ "type":"boolean", "format":"checkbox", "default":true, "title":"Invite users" }, "pin_messages":{ "type":"boolean", "format":"checkbox", "default":true, "title":"Pin messages" } } }, "admin":{ "type":"object", "title":"set admin", "description":"grant or revoke admin rights for chat members. For small Group chats you can only toggle if member is admin.", "required":["members","is_admin"], "properties":{ "members":{ "type":"array", "format":"table", "items":{ "type":"string", "isAdaptorContent":false } }, "is_admin":{ "title":"is admin", "type":"boolean" }, "change_info":{ "type":"boolean" }, "post_messages":{ "type":"boolean" }, "edit_messages":{ "type":"boolean" }, "delete_message":{ "type":"boolean" }, "ban_users":{ "type":"boolean" }, "invite_users":{ "type":"boolean" }, "pin_messages":{ "type":"boolean" }, "add_admins":{ "type":"boolean" }, "title":{ "type":"string" } } }, "languages":{ "type":"string", "enum":["da-DK","de-DE","en-AU","en-CA","en-GB","en-IN","en-US","ca-ES","es-ES","es-MX","fi-FI","fr-CA","fr-FR","it-IT","ja-JP","ko-KR","nb-NO","nl-NL","pl-PL","pt-BR","pt-PT","ru-RU","sv-SE","zh-CN","zh-HK","zh-TW"], "isAdaptorContent":false }, "respond":{ "type":"array", "format":"table", "description":"On match, respond or reply to the incoming message. ", "items":{ "type":"object", "title":"response", "properties":{ "mode":{ "type":"string", "enum":["respond","reply"], "isAdaptorContent":false }, "text":{ "type":"string", "minLength":1, "format":"textarea" } } } } }, "actions": { "sendMessage":{ "type":"object", "title":"Send Message", "description": "Send a text message.", "documentation":"https://docs.adaptorex.org/basics/actions/telegram/sendMessage.html", "template":"{const regex = new RegExp(`${action.plugin}\\.[a-zA-Z]*\\.`); return { title:`telegram ${action.name}`, subtitle:`from ${payload.agent?.replace(regex, '')} to ${payload.to}`, body:[{ text: payload.text }]} }", "resolveAdaptorVariables":false, "required":["agent","to","text"], "default":{"to":"Player"}, "additionalProperties":false, "properties": { "agent":{ "title":"from", "$ref":"#/definitions/telegram_items" }, "to":{"$ref":"#/definitions/chat"}, "text":{ "type":"string", "format":"textarea" }, "typing":{ "type":"string", "description":"Set a delay in seconds to show the 'typing' indicator before the message is sent. If you do not select this option, a delay will be calculated based on the length of the message you send. Set to 0 to not show he indicator at all." }, "pin":{ "type":"boolean", "format":"checkbox", "description":"Pin the message and notify chat user(s)." } } }, "sendFile":{ "type":"object", "title":"Send File", "description":"Send a picture, document, video or voice message.", "documentation":"https://docs.adaptorex.org/basics/actions/telegram/sendFile.html", "template":"{const regex = new RegExp(`${action.plugin}\\.[a-zA-Z]*\\.`); return { title:`telegram ${action.name}`, subtitle:`from ${payload.agent?.replace(regex, '')} to ${payload.to}`, body:[{ text: payload.file }]} }", "resolveAdaptorVariables":false, "required":["agent","to","file","format"], "default":{"to":"Player"}, "additionalProperties":false, "properties": { "agent":{ "title":"from", "$ref":"#/definitions/telegram_items" }, "to":{"$ref":"#/definitions/chat"}, "file":{"$ref":"#/definitions/files"}, "caption":{ "type":"string", "format":"textarea" }, "format":{ "type":"string", "enum":["auto","document","voice","video"], "isAdaptorContent":false }, "pin":{ "type":"boolean", "format":"checkbox", "description":"Pin the media message and notify chat user(s)" } } }, "sendGeo":{ "title":"Send Geo Location", "description":"Send a small map widget that points to a geo location.", "documentation":"https://docs.adaptorex.org/basics/actions/telegram/sendGeo.html", "template":"{const regex = new RegExp(`${action.plugin}\\.[a-zA-Z]*\\.`); return { title:`telegram ${action.name}`, subtitle:`from ${payload.agent?.replace(regex, '')} to ${payload.to}`, body:[{ text: `Lat: ${payload.latitude.substr(0, 27)}`},{ text: `Lon: ${payload.longitude.substr(0, 27)}`}]} }", "resolveAdaptorVariables":false, "default":{"to":"Player"}, "type":"object", "required":["agent","to","longitude", "latitude"], "additionalProperties":false, "properties": { "agent":{ "title":"from", "$ref":"#/definitions/telegram_items" }, "to":{"$ref":"#/definitions/chat"}, "latitude":{ "type":"string", "description":"Geo Coordinate Latitude value. E.g. 53.5823000" }, "longitude":{ "type":"string", "description":"Geo Coordinate Longitude value. E.g. 9.9693000" } } }, "sendPoll":{ "title":"Send Poll", "description":"Send a poll for group members to vote.", "documentation":"https://docs.adaptorex.org/basics/actions/telegram/sendPoll.html", "resolveAdaptorVariables":false, "template":"{const regex = new RegExp(`${action.plugin}\\.[a-zA-Z]*\\.`); return { title:`telegram ${action.name} ${payload.name}`, subtitle:`from ${payload.agent?.replace(regex, '')} to ${payload.to}`, body:[{text: payload.question}]} }", "default":{"to":"Groupchat","private":true,"multiple_choice":false,"quiz":false}, "type":"object", "required":["agent","to","name","question","answers","private","multiple_choice"], "additionalProperties":false, "properties": { "agent":{ "title":"from", "$ref":"#/definitions/telegram_items" }, "to":{"$ref":"#/definitions/chat"}, "name":{ "type":"string", "title":"Name", "pattern": "^[^\\s]*$" }, "question":{ "type":"string", "title":"Question" }, "answers":{ "type":"array", "title":"Answer Options", "format":"table", "items":{ "type":"string", "title":"Answer" } }, "private":{ "type":"boolean", "title":"Anonymous Vote", "format":"checkbox" }, "multiple_choice":{ "type":"boolean", "title":"Multiple Choice", "format":"checkbox" } } }, "sendQuiz":{ "title":"Send Quiz", "description":"Send a poll that has a correct answer.", "documentation":"https://docs.adaptorex.org/basics/actions/telegram/sendQuiz.html", "resolveAdaptorVariables":false, "template":"{const regex = new RegExp(`${action.plugin}\\.[a-zA-Z]*\\.`); return { title:`telegram ${action.name} ${payload.name}`, subtitle:`from ${payload.agent?.replace(regex, '')} to ${payload.to}`, body:[{text: payload.question}]} }", "default":{"to":"Groupchat"}, "type":"object", "required":["agent","to","name","question","answers","correct_answer"], "additionalProperties":false, "properties": { "agent":{ "title":"from", "$ref":"#/definitions/telegram_items" }, "to":{"$ref":"#/definitions/chat"}, "name":{ "type":"string", "title":"Name", "pattern": "^[^\\s]*$" }, "question":{ "type":"string", "title":"Question" }, "answers":{ "type":"array", "title":"Answer Options", "format":"table", "items":{ "type":"string", "title":"Answer" } }, "correct_answer": { "type": "string", "title":"Correct Answer", "watch": { "answer_options": "answers" }, "enumSource": "answer_options" }, "private":{ "type":"boolean", "title":"Anonymous Quiz", "format":"checkbox" } } }, "castVote":{ "type":"object", "title":"Cast Vote", "description": "Vote in a Chat Poll that was created with Send Poll.", "documentation":"https://docs.adaptorex.org/basics/actions/telegram/castVote.html", "template":"{const regex = new RegExp(`${action.plugin}\\.[a-zA-Z]*\\.`); return { title:`telegram ${action.name}`, subtitle:`${payload.agent?.replace(regex, '')} cast vote(s) in ${payload.to} poll ${payload.poll}`, body:[{ text: `${payload.options}` }]} }", "resolveAdaptorVariables":false, "required":["agent","to","poll","options"], "default":{"to":"Player","options":[]}, "additionalProperties":false, "properties": { "agent":{ "$ref":"#/definitions/telegram_accounts" }, "to":{"$ref":"#/definitions/chat"}, "poll":{ "type":"string", "description":"Name of poll, as defined in 'Send Poll', to cast vote for." }, "options":{ "type":"array", "format":"table", "description":"Index of Poll option (first option is 0) or title of Poll option.", "items":{ "title":"option", "type":"string" } } } }, "buttons":{ "title":"Buttons", "description":"Send/show buttons and respond to button clicks. Only for Bots.", "documentation":"https://docs.adaptorex.org/basics/actions/telegram/buttons.html", "resolveAdaptorVariables":false, "mode":"listen", "template":"{}", "default":{"to":"Player","message":"","buttons":[{}]}, "type":"object", "required":["agent","to","type","message","buttons"], "additionalProperties":false, "properties": { "agent":{ "title":"Bot", "$ref":"#/definitions/telegram_bots" }, "to":{"$ref":"#/definitions/chat"}, "from":{ "type":"array", "description":"User(s) that can click the buttons in the chat. If chat is not a group chat or channel this will be ignored.", "isAdaptorContent":false, "default":[""], "items":{ "type":"string", "format":"table", "title":"member" } }, "type": { "type":"string", "enum":["inline","keyboard"] }, "message":{ "type":"string" }, "typing":{ "type":"string", "description":"Set a delay in seconds to show the 'typing' indicator before the buttons are sent. If you do not select this option, a delay will be calculated based on the length of the message you send. Set to 0 to not show he indicator at all." }, "buttons":{ "type":"array", "title":"Buttons", "items": { "type": "array", "title": "row", "items": { "type": "object", "title": "button", "required":["label"], "additionalProperties": false, "properties": { "label":{ "type":"string" }, "respond":{ "$ref":"#/definitions/respond" }, "next":{ "$ref":"#/definitions/next" } } } } }, "keep_listening": {"$ref":"#/definitions/keep_listening"} } }, "onMessage":{ "type":"object", "title":"On Incoming Message", "description":"React to the content of incoming messages.", "documentation":"https://docs.adaptorex.org/basics/actions/telegram/onMessage.html", "required":["agent","chat"], "mode":"listen", "resolveAdaptorVariables":false, "additionalProperties": false, "properties": { "agent":{ "title":"Account or Bot", "$ref":"#/definitions/telegram_items" }, "chat":{"$ref":"#/definitions/chat"}, "from":{ "type":"array", "description":"User (Player, Account or Bot) the message in the chat originates from. If chat is not a group chat or channel this will be ignored.", "isAdaptorContent":false, "default":[""], "items":{ "type":"string", "format":"table", "title":"member" } }, "priority":{ "type":"number", "default":1, "description":"Ignore this if there is an incoming message action with the same members of higher priority in a different path, prefer this otherwise. If priority is the same, latest 'On Incoming Message' is preferred.", "enum":[0, 1, 2], "options": { "enum_titles": [ "low", "normal", "high" ] } }, "if":{ "type":"array", "title":"if", "items":{ "title":"condition", "oneOf":[ { "title":"Equals", "description":"If message equals the or any of the following values", "type":"object", "additionalProperties": false, "required":["equals"], "properties":{ "equals":{"$ref":"#/definitions/equals"}, "case_sensitive":{"type":"boolean","format":"checkbox","title":"case sensitive"}, "respond":{"$ref":"#/definitions/respond"}, "next":{"$ref":"#/definitions/next"} } }, { "title":"Contains", "description":"If message contains the or any of the following values", "type":"object", "additionalProperties": false, "required":["contains"], "properties":{ "contains":{"$ref":"#/definitions/contains"}, "case_sensitive":{"type":"boolean","format":"checkbox","title":"case sensitive"}, "respond":{"$ref":"#/definitions/respond"}, "next":{"$ref":"#/definitions/next"} } }, { "title":"Contains Media", "description":"If message contains some type of media", "type":"object", "required":["media"], "additionalProperties": false, "properties":{ "media":{ "propertyOrder": 2, "oneOf":[ { "title":"contains", "type":"string", "enum":["photo","image","document","audio","voice","video","sticker","geo","geolive","contact","poll","webpage","venue","game","dice","invoice","downloadable","any","unsupported","empty","unknown"], "required":true, "isAdaptorContent":false }, { "title":"contains any of", "type":"array", "format":"table", "default":["",""], "items":{"type":"string","title":"media type","enum":["photo","image","document","audio","voice","video","sticker","geo","geolive","contact","poll","webpage","venue","game","dice","invoice","unsupported","empty","unknown"],"isAdaptorContent":false} } ] }, "download":{ "type":"object", "required":["dir"], "description":"Download media from incoming message if it is photo, image, document, audio, voice, video or sticker", "properties":{ "dir":{ "type":"string", "title": "directory", "default":"telegram/", "description":"Set a directory where to store the downloaded media file." }, "file":{ "type":"string", "title":"filename", "default":"", "description":"Set an optional filename under which to store the downloaded media. Do not provide a file extension hence it will be appended automatically." }, "variable":{ "type":"string", "title":"variable", "default":"", "description":"Store the download path to a local variable." } } }, "respond":{"$ref":"#/definitions/respond"}, "next":{"$ref":"#/definitions/next"} } }, { "title":"Less Than", "description":"If message is value that is less than", "type":"object", "default":{"lessThan":""}, "additionalProperties": false, "properties":{ "lessThan":{"$ref":"#/definitions/lessThan"}, "respond":{"$ref":"#/definitions/respond"}, "next":{"$ref":"#/definitions/next"} } }, { "title":"Greater Than", "description":"If message is value that is greater than", "type":"object", "default":{"greaterThan":""}, "additionalProperties": false, "properties":{ "greaterThan":{"$ref":"#/definitions/greaterThan"}, "respond":{"$ref":"#/definitions/respond"}, "next":{"$ref":"#/definitions/next"} } }, { "title":"Regular Expression", "description":"If regular expression returns anything when used on incoming message", "type":"object", "default":{"regex":""}, "additionalProperties": false, "properties":{ "regex":{"$ref":"#/definitions/regex"}, "respond":{"$ref":"#/definitions/respond"}, "case_sensitive":{"type":"boolean","format":"checkbox","title":"case sensitive"}, "next":{"$ref":"#/definitions/next"} } }, { "title":"Javascript Function", "description":"If javascript function returns true. Use value as function argument.", "type":"object", "default":{"javascript":""}, "additionalProperties": false, "properties":{ "javascript":{"$ref":"#/definitions/javascript"}, "respond":{"$ref":"#/definitions/respond"}, "next":{"$ref":"#/definitions/next"} } }, { "title":"Database Query", "description":"If database find query returns a valid document. You can use 'On Incoming Message' 'text' action var in query: [[statename.actionname.text]]", "type":"object", "default":{"find":""}, "additionalProperties": false, "properties":{ "find":{"$ref":"#/definitions/find"}, "respond":{"$ref":"#/definitions/respond"}, "next":{"$ref":"#/definitions/next"} } } ] } }, "else":{ "type":"object", "title":"else", "additionalProperties":false, "properties":{ "next":{"$ref":"#/definitions/next"}, "respond":{"$ref":"#/definitions/respond"} } }, "while_idle": {"$ref":"#/definitions/while_idle"}, "finally": {"$ref":"#/definitions/finally"}, "keep_listening": {"$ref":"#/definitions/keep_listening"} } }, "createChat":{ "type":"object", "title":"Create Chat", "description":"Create a new telegram chat", "documentation":"https://docs.adaptorex.org/basics/actions/telegram/createChat.html", "template":"{return { title:`telegram ${action.name}`, subtitle:`new chat '${payload.name}' ${payload.reference || ''}`, body:[{ text: `Members: ${payload.agent?.replace('telegram.accounts.', '')}, ${payload.members.join(', ')}`}]} }", "resolveAdaptorVariables":false, "required":["name","agent","members","type"], "additionalProperties":false, "properties":{ "type":{ "type":"string", "enum":["chat"], "isAdaptorContent":false }, "name":{ "type":"string" }, "agent":{ "$ref":"#/definitions/telegram_accounts" }, "members":{ "type":"array", "format":"table", "description":"reference or query to agent or player", "items":{ "type":"string", "title":"member", "isAdaptorContent":false } }, "title":{ "type":"string", "description":"Set a group chat title that is different from the chat name" }, "photo":{"$ref":"#/definitions/files"}, "about":{ "type":"string", "format":"textarea", "description":"group description text" }, "create_link":{ "type":"boolean", "title":"create invite link", "format":"checkbox", "default":true, "description":"create an invite link. The link URL will be stored in the chat item under 'link'. The link will never expire, requires no confirmation and can be used infinite times." }, "permissions":{"$ref":"#/definitions/permissions"}, "reference":{ "type":"string", "description":"Name to reference the group chat or channel from inside this level.", "isAdaptorContent":false } } }, "editChat":{ "type":"object", "title":"Edit Chat", "description":"Change group chat settings and add or remove members. The executing Agent has to be group admin", "documentation":"https://docs.adaptorex.org/basics/actions/telegram/editChat.html", "resolveAdaptorVariables":false, "required":["chat","agent"], "additionalProperties":false, "properties":{ "agent":{ "title":"Account or Bot", "$ref":"#/definitions/telegram_items" }, "chat":{"$ref":"#/definitions/chat"}, "title":{ "type":"string", "description":"change group chat title" }, "add_members":{ "type":"array", "title":"add members", "format":"table", "description":"add members by reference or query to agent or player", "items":{ "type":"string", "title":"member", "isAdaptorContent":false } }, "remove_members":{ "type":"array", "title":"remove members", "format":"table", "description":"remove members by reference or query to agent or player", "items":{ "type":"string", "title":"member", "isAdaptorContent":false } }, "photo":{"$ref":"#/definitions/files"}, "about":{ "type":"string", "description":"group description text" }, "create_link":{ "type":"boolean", "default":true, "title":"create invite link", "description":"create an invite link. The link URL will be stored in the chat item under 'link'. The link will never expire, requires no confirmation and can be used infinite times." }, "permissions":{"$ref":"#/definitions/permissions"} } } } }