热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用户如何将图像上传到Slack应用程序?

为了提供上下文,我有一个Slack机器人,允许用户创建广告,我可以使用对话框来

为了提供上下文,我有一个Slack机器人,允许用户创建广告,我可以使用对话框来获取列表标题,描述和价格。寻找的是一种允许用户也添加图像的方法。

file.upload似乎允许该机器人上载文件,但是我想要的是能够允许用户在本地选择文件并上载它们,然后该机器人将能够捕获该文件并做出相应的响应。

这是我到目前为止所拥有的

@app.route('/new',methods=['POST'])
def new_listing():
# Get payload
api_url = 'https://slack.com/api/dialog.open'
trigger_id = request.form.get('trigger_id')
dialog = {
"callback_id": "marketplace","title": "Create a new listing","submit_label": "Create","notify_on_cancel": True,"state": "Item","elements": [
{
"type": "text","label": "Listing Title","name": "listing_title"
},{
"type": "text","label": "Listing description","name": "listing_description"
},"label": "Listing Price","name": "listing_price"
}
]
}
api_data = {
"token": oauth_token,"trigger_id": trigger_id,"dialog": json.dumps(dialog)
}
res = requests.post(api_url,data=api_data)
print(res.content)
return make_response()
@app.route('/message_actions',methods=['POST'])
def message_actions():
user_id = request.form['user']['id']
submission = request.form['submission']
title = submission['listing_title']
description = submission['listing_description']
price = submission['listing_price']
# Add the listing to the database
return make_response()



由于Slack API(当前)不提供文件选择器,因此没有直接的方法。

但是,这里有3种解决方法可以满足此要求:

A-图片网址

用户不是直接将图像上传到Slack,而是仅提供Internet上托管的图像的URL(例如,上传到imgur.com)。可以在对话框中使用简单的plain-text input field来查询图像URL。

如果您可以期望用户精通技术,可以处理图像URL并上传到imgur.com(或其他图像托管者),我认为这种方法很好用。

B-外部网页

您将用户重定向到您的具有文件选择器的应用程序的外部网页。该文件选择器允许将图像从用户本地计算机上传到您的应用。

这种方法也很好用。但是,用户需要切换到浏览器(然后再次回到Slack),这样它可能会稍微破坏输入流。实施例如您需要以安全的方式维护Slack和网页之间的上下文,这可能是一个挑战。

C-手动上传到Slack

用户将图片手动上传到Slack,例如在应用程式频道中您的应用会检测到每张图像上传,并询问它们将图像附加到应用的哪个项目。

这种方法使您可以留在Slack生态系统中,但可能会使用户感到困惑,并且要确保用户上传的内容与您的商品之间的正确链接可能是一个挑战。

P.S .:我对其中一个Slack应用(Rafflebot)有相同的要求,并采用了方法A。

,

您没有显示如何调用/ new(带有触发器ID)。但是,尽管对话和新模式似乎没有文件选择器,但Slack应用程序确实具有。所以我要做的是从向我的应用发送一条消息开始我的流程-该消息可以附加文件。因此,例如,我的应用程序看起来像消息“新报告”(即用户,在发送前可以附加图像),而我的应用程序既会收到消息,又会在消息事件中获得“文件”属性。


推荐阅读
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 1简介本文结合数字信号处理课程和Matlab程序设计课程的相关知识,给出了基于Matlab的音乐播放器的总体设计方案,介绍了播放器主要模块的功能,设计与实现方法.我们将该设 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有