如何从资源制作图像?

时间:2018-03-30 00:02:43

标签: php telegram telegram-bot

我有代码返回我的图像资源(它的GD库),如@SpringBootApplication public class So49566278Application { public static void main(String[] args) { SpringApplication.run(So49566278Application.class, args); } @Bean public ApplicationRunner runner(RabbitTemplate template) { template.setReplyTimeout(60_000); return args -> { @SuppressWarnings("unchecked") List<Foo> reply = (List<Foo>) template.convertSendAndReceive("so49566278", "baz"); System.out.println(reply); Foo foo = reply.get(0); System.out.println(foo); }; } @RabbitListener(queues = "so49566278") public List<Foo> handle(String in) { return Collections.singletonList(new Foo(in)); } @Bean public Queue queue() { return new Queue("so49566278", false, false, true); } @Bean public MessageConverter converter() { Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter(); converter.setJavaTypeMapper(new DefaultJackson2JavaTypeMapper() { @Override public JavaType toJavaType(MessageProperties properties) { JavaType javaType = super.toJavaType(properties); if (javaType instanceof CollectionLikeType) { return TypeFactory.defaultInstance() .constructCollectionLikeType(List.class, Foo.class); } else { return javaType; } } }); return converter; } public static class Foo { private String bar; public Foo() { super(); } public Foo(String bar) { this.bar = bar; } public String getBar() { return this.bar; } public void setBar(String bar) { this.bar = bar; } @Override public String toString() { return "Foo [bar=" + this.bar + "]"; } } }

电报方法sendPhoto

请帮助我&gt;&lt;如何使用此资源将其发送到Telegram?

文档说

  

“要发送的照片。将file_id作为字符串传递以发送Telegram服务器上存在的照片(推荐),将HTTP URL作为Telegram的字符串传递以从Internet获取照片,或使用上传新照片multipart / form-data。有关发送文件的更多信息»“

但我无法理解我应该用这个资源做什么

1 个答案:

答案 0 :(得分:0)

方法sendPhoto有2个必填字段 - chat_id,通常是用户ID,photo。您可以使用3 following options之一指定photo

    照片的
  • URL(例如https://telegram.org/img/t_logo.png
  • 如果您之前发送过图片,则可以指定其file_id。如果您的机器人仅发送一次特定图像 ,则此选项没有任何意义。您可以从Message对象的file_id属性获取photo(当您使用sendPhoto方法发送照片时,服务器会返回Message)。
  • 或者您只需使用标头Content-Type: multipart/form-data在HTTP请求正文中发送照片即可。

最简单方式是按URL发送 最快方式是按file_id发送,因为电报服务器不必处理传入的图像。这可能是Telegram API将其标记为推荐选项的原因。

因此,如果您拥有URL图片,请按URLfile_id发送。如果您有文件,请将其作为multipart/form-data有效负载发送。