Sending image items via Telegram binding

I saw someone having the same problem which hadn’t been solved here

Since it took me a moment to get this working, here’s how, in javascript. (blockly doesn’t support it)

var image, i;
var things = Java.type('org.openhab.core.model.script.actions.Things');

image = itemRegistry.getItem('myItemName').getState().toFullString();
var i = '1234567890';
things.getActions('telegram', 'telegram:telegramBot:myTgBot').sendTelegramPhoto(i, image, 'text');

1 Like

i have edited the blockly-library to enable this.

here’s the code

uid: telegram_with_chatID
tags:
  - marketplace:131112
props:
  parameters: []
  parameterGroups: []
timestamp: Dec 24, 2022, 12:29:23 AM
component: BlockLibrary
config:
  name: Telegram with ChatID
slots:
  blocks:
    - component: BlockType
      config:
        args0:
          - name: MESSAGE
            type: input_value
          - name: BOT
            type: input_value
          - name: CHAT_ID
            type: input_value
        colour: "#2ea5d8"
        helpUrl: ""
        inputsInline: true
        lastDummyAlign0: right
        message0: send on Telegram %1 from bot %2 with chat id %3
        nextStatement: ""
        previousStatement: ""
        tooltip: ""
        type: message
      slots:
        code:
          - component: BlockCodeTemplate
            config:
              template: >
                {{utility:things}}.getActions('telegram', {{input:BOT}}).sendTelegram({{input:CHAT_ID}}, {{input:MESSAGE}});
        toolbox:
          - component: PresetInput
            config:
              fields:
                TEXT: What's up?
              name: MESSAGE
              shadow: true
              type: text
          - component: PresetInput
            config:
              name: BOT
              shadow: true
              type: oh_thing
          - component: PresetInput
            config:
              fields:
                NUM: 123
              name: CHAT_ID
              shadow: true
              type: math_number
    - component: BlockType
      config:
        args0:
          - align: right
            name: ATTACHMENT_TYPE
            options:
              - - photo
                - Photo
              - - animation
                - Animation
              - - video
                - Video
            type: field_dropdown
          - align: right
            name: URL
            type: input_value
          - align: right
            name: CAPTION
            type: input_value
          - align: right
            name: BOT
            type: input_value
          - align: right
            name: CHAT_ID
            type: input_value
        colour: "#2ea5d8"
        helpUrl: ""
        inputsInline: false
        lastDummyAlign0: right
        lastDummyAlignRight0: true
        message0: send %1 on Telegram %2 with caption %3 from bot %4 with chat id %5
        nextStatement: ""
        previousStatement: ""
        tooltip: ""
        type: message_attachment
      slots:
        code:
          - component: BlockCodeTemplate
            config:
              template: >
                {{utility:things}}.getActions('telegram', {{input:BOT}}).sendTelegram({{input:CHAT_ID}}, {{field:ATTACHMENT_TYPE}}({{input:URL}}, {{input:CAPTION}}));
        toolbox:
          - component: PresetInput
            config:
              fields:
                TEXT: URL or filename
              name: URL
              shadow: true
              type: text
          - component: PresetInput
            config:
              fields:
                TEXT: caption
              name: CAPTION
              shadow: true
              type: text
          - component: PresetInput
            config:
              name: BOT
              shadow: true
              type: oh_thing
          - component: PresetInput
            config:
              fields:
                NUM: 123
              name: CHAT_ID
              shadow: true
              type: math_number
    - component: BlockType
      config:
        args0:
          - align: right
            name: URL
            type: input_value
          - align: right
            name: USERNAME
            type: input_value
          - align: right
            name: PASSWORD
            type: input_value
          - align: right
            name: CAPTION
            type: input_value
          - align: right
            name: BOT
            type: input_value
          - align: right
            name: CHAT_ID
            type: input_value
        colour: "#2ea5d8"
        helpUrl: ""
        inputsInline: false
        lastDummyAlign0: right
        lastDummyAlignRight0: true
        message0: send photo on Telegram %1 username %2 password %3 with caption %4 from bot %5 with chat id %6
        nextStatement: ""
        previousStatement: ""
        tooltip: ""
        type: message_attachment_photo_with_creds
      slots:
        code:
          - component: BlockCodeTemplate
            config:
              template: >
                {{utility:things}}.getActions('telegram', {{input:BOT}}).sendTelegramPhoto({{input:CHAT_ID}}, {{input:URL}}, {{input:CAPTION}}, {{input:USERNAME}}, {{input:PASSWORD}});
        toolbox:
          - component: PresetInput
            config:
              fields:
                TEXT: URL or filename
              name: URL
              shadow: true
              type: text
          - component: PresetInput
            config:
              fields:
                TEXT: caption
              name: CAPTION
              shadow: true
              type: text
          - component: PresetInput
            config:
              fields:
                TEXT: user
              name: USERNAME
              shadow: true
              type: text
          - component: PresetInput
            config:
              fields:
                TEXT: pass
              name: PASSWORD
              shadow: true
              type: text
          - component: PresetInput
            config:
              name: BOT
              shadow: true
              type: oh_thing
          - component: PresetInput
            config:
              fields:
                NUM: 123
              name: CHAT_ID
              shadow: true
              type: math_number
    - component: Separator
      config:
        gap: 48
    - component: BlockType
      config:
        args0:
          - align: right
            name: MESSAGE
            type: input_value
          - align: right
            name: BOT
            type: input_value
          - align: right
            name: REPLY_ID
            type: input_value
          - align: right
            name: CHAT_ID
            type: input_value
          - align: right
            name: BUTTONS
            type: field_input
        colour: "#2ea5d8"
        helpUrl: ""
        inputsInline: false
        lastDummyAlign0: right
        lastDummyAlignRight0: true
        message0: ask on Telegram %1 from bot %2 use reply id %3 with chat id %4 with buttons %5
        nextStatement: ""
        previousStatement: ""
        tooltip: ""
        type: query
      slots:
        code:
          - component: BlockCodeTemplate
            config:
              template: >
                {{utility:things}}.getActions('telegram', {{input:BOT}}).sendTelegramQuery({{input:CHAT_ID}}, {{input:MESSAGE}}, {{input:REPLY_ID}}, {{field:BUTTONS}});
        toolbox:
          - component: PresetInput
            config:
              fields:
                TEXT: Turn off the lights?
              name: MESSAGE
              shadow: true
              type: text
          - component: PresetField
            config:
              name: BUTTONS
              value: "'Yes', 'No'"
          - component: PresetInput
            config:
              fields:
                TEXT: replyId
              name: REPLY_ID
              shadow: true
              type: text
          - component: PresetInput
            config:
              name: BOT
              shadow: true
              type: oh_thing
          - component: PresetInput
            config:
              fields:
                NUM: 123
              name: CHAT_ID
              shadow: true
              type: math_number
    - component: BlockType
      config:
        args0:
          - align: right
            name: MESSAGE
            type: input_value
          - align: right
            name: REPLY_ID
            type: input_value
          - align: right
            name: BOT
            type: input_value
          - align: right
            name: CHAT_ID
            type: input_value
        colour: "#2ea5d8"
        helpUrl: ""
        inputsInline: false
        lastDummyAlign0: right
        lastDummyAlign1: right
        lastDummyAlignRight0: true
        message0: reply on Telegram %1 to reply id %2 from bot %3 with chat id %4
        nextStatement: ""
        previousStatement: ""
        tooltip: ""
        type: answer
      slots:
        code:
          - component: BlockCodeTemplate
            config:
              template: >
                {{utility:things}}.getActions('telegram', {{input:BOT}}).sendTelegramAnswer({{input:CHAT_ID}}, {{input:REPLY_ID}}, {{input:MESSAGE}});
        toolbox:
          - component: PresetInput
            config:
              fields:
                TEXT: Ok!
              name: MESSAGE
              shadow: true
              type: text
          - component: PresetInput
            config:
              fields:
                TEXT: replyId
              name: REPLY_ID
              shadow: true
              type: text
          - component: PresetInput
            config:
              name: BOT
              shadow: true
              type: oh_thing
          - component: PresetInput
            config:
              fields:
                NUM: 123
              name: CHAT_ID
              shadow: true
              type: math_number
    - component: BlockType
      config:
        args0:
          - align: right
            name: ITEM
            type: input_value
          - align: right
            name: CAPTION
            type: input_value
          - align: right
            name: BOT
            type: input_value
          - align: right
            name: CHAT_ID
            type: input_value
        colour: "#2ea5d8"
        helpUrl: ""
        inputsInline: false
        lastDummyAlign0: right
        lastDummyAlignRight0: true
        message0: send image-item on Telegram %1 with caption %2 from bot %3 with chat id %4
        nextStatement: ""
        previousStatement: ""
        tooltip: ""
        type: message_attachment_item
      slots:
        code:
          - component: BlockCodeTemplate
            config:
              template: >
                {{utility:things}}.getActions('telegram', {{input:BOT}}).sendTelegramPhoto({{input:CHAT_ID}}, itemRegistry.getItem({{input:ITEM}}).getState().toFullString(), {{input:CAPTION}});
        toolbox:
          - component: PresetInput
            config:
              fields:
                TEXT: Item containing image
              name: ITEM
              shadow: true
              type: oh_item
          - component: PresetInput
            config:
              fields:
                TEXT: caption
              name: CAPTION
              shadow: true
              type: text
          - component: PresetInput
            config:
              name: BOT
              shadow: true
              type: oh_thing
          - component: PresetInput
            config:
              fields:
                NUM: 123
              name: CHAT_ID
              shadow: true
              type: math_number
  utilities:
    - component: UtilityJavaType
      config:
        javaClass: org.openhab.core.model.script.actions.Things
        name: things

1 Like