首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户如何将图片上传到Slack应用程序?

问用户如何将图片上传到Slack应用程序?
EN

Stack Overflow用户
提问于 2019-11-14 01:36:45
回答 2查看 735关注 0票数 1

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

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

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

代码语言:javascript
复制
@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"
            },
            {
                "type": "text",
                "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()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-14 07:21:12

没有直接的方法,因为Slack API (当前)不提供filer选择器。

然而,这里有3个解决方法来解决这个要求:

A-图像URL

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

如果你能期望你的用户足够精通技术,能够处理图片URL和上传到imgur.com (或其他图片托管商),我认为这种方法效果很好。

B-外部网页

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

这种方法也能很好地工作。然而,用户需要切换到浏览器(然后再切换回Slack ),所以它可能会稍微中断输入流。它也需要更多的努力来实现,例如,你需要以一种安全的方式维护Slack和你的网页之间的上下文,这可能是一个挑战。

C-手动上传到Slack

用户手动将图片上传到Slack,例如在应用程序通道中。你的应用程序会检测每一张上传的图片,并询问他们要将图片附加到应用程序的哪个项目上。

这种方法允许您留在Slack生态系统中,但可能会让用户感到困惑,并且确保用户上传和您的项目之间的正确链接可能是一个挑战。

附言:我的一个Slack应用程序(Rafflebot)也有同样的要求,我选择了A方法。

票数 2
EN

Stack Overflow用户

发布于 2019-11-20 04:47:36

您没有展示如何调用/new (使用触发器id)。然而,虽然对话和新的模态似乎没有文件选择器,但slack应用程序肯定有。因此,我所做的就是向我的应用程序发送一条消息作为我的流程的开始--该消息可以附加文件。例如,我的应用程序看起来是消息'new report‘-用户在发送之前可以附加图像-我的应用程序将获得消息并获得"files“属性作为消息事件的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58842648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档