UNPKG

adaptorex

Version:

Connect all your live interactive storytelling devices and software

1,095 lines (1,094 loc) 37.2 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" } } } } }