我已经成功实现了facebook bot.它工作正常.我正在尝试更改webhook网址,因为我必须将其移植到具有新域的其他服务器.
有一个选项可以更改事件,但我找不到和选项来更改webhook.我该如何改变它?
我正在为GitHub编写一个Webhook,并在以下位置实现安全验证KOA.js:
function sign(tok, blob) {
var hmac;
hmac = crypto
.createHmac('sha1', tok)
.update(blob)
.digest('hex');
return 'sha1=' + hmac;
}
...
key = this.request.headers['x-hub-signature'];
blob = JSON.stringify(this.request.body);
if (!key || !blob) {
this.status = 400;
this.body = 'Bad Request';
}
lock = sign(settings.api_secret, blob);
if (lock !== key) {
console.log(symbols.warning, 'Unauthorized');
this.status = 403;
this.body = 'Unauthorized';
return;
}
...
Run Code Online (Sandbox Code Playgroud)
对于pull_requests和create事件,这工作正常,即使推送新分支也可以工作,但是对于推送提交事件,x-hub-signature来自有效负载的计算哈希值不匹配,因此它总是获得403未授权.
更新
我注意到,对于这种推送有效载荷,提交和head_commit被添加到有效载荷中.我已经尝试从正文中删除提交和head_commit但它没有用.
更新
有关更多信息,请查看这些示例有效负载.我还为测试回购和令牌信息添加了url:https://gist.github.com/marcoslhc/ec581f1a5ccdd80f8b33
所以我正在尝试为新的Facebook Messenger API设置机器人.
我正在关注快速入门.
我设置webhook好了,在我的webhook中看到它,
我打电话给:
https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=%3Ctoken%3E
Run Code Online (Sandbox Code Playgroud)
它没有抛出任何错误,
但是当我进入我生成访问令牌的页面并发送消息时,它不会调用我的webhook.我检查了httpaccess,它没有调用它.
有没有办法调试这个或任何想法?
此外,我仍然困惑的一件事是如何支持从一个Facebook应用程序管理多个页面?任何人都知道答案,或者您是否需要创建一个新的应用程序并获得每个页面的权限?
Azure Functions的扩展文档对Azure Functions如何决定何时添加应用程序的更多实例的细节有所了解.
比方说,我有一个由Github webhook触发的功能.10000人同时提交到GitHub库(无合并冲突;)),并在Github上的时间很短的时间调用我的函数10000次.
我能期待什么?特别,
Sendgrid webhook有sg_message_id
但是发送邮件时Web API v2的响应没有sg_message_id.实际上,只有消息显示success或失败.
那么,我如何关联发送邮件和webhook回调?
我已经在SO中查看过去的问题,但它没有为此提供解决方案.
谢谢.
在我的应用程序中,用户每月订阅(和计费)24个月.在我最初创建订阅的第24个月之后,有没有办法让Stripe自动结束订阅?
我正在使用laravel队列在facebook帖子上发表评论.当我收到来自facebook webhook的数据时,根据收到的详细信息,我正在评论帖子.要从facebook webhook一次处理100个响应,我正在使用laravel队列,以便它可以逐个执行.我使用了https://scotch.io/tutorials/why-laravel-queues-are-awesome中提到的一步一步的过程
public function webhooks(Request $request)
{
$data = file_get_contents('php://input');
Log::info("Request Cycle with Queues Begins");
$job = (new webhookQueue($data)->delay(10);
$this->dispatch($job);
Log::info("Request Cycle with Queues Ends");
}
Run Code Online (Sandbox Code Playgroud)
这是我的工作类结构
class webhookQueue extends Job implements ShouldQueue
Run Code Online (Sandbox Code Playgroud)
{
使用InteractsWithQueue,SerializesModels;
private $data;
public function __construct($data)
{
$this->data = $data;
}
public function handle()
{
//handling the data here
}
Run Code Online (Sandbox Code Playgroud)
}
我连续点击webhooks()函数,所有作业同时工作但不在队列中,没有任何作业存储在作业表中,我已经给出延迟但它也没有工作,请一些人帮助我,我一直在从昨天开始尝试,但没有结果.
这是我登录laravel.log
[2017-02-08 14:18:42] local.INFO: Request Cycle with Queues Begins
[2017-02-08 14:18:44] local.INFO: Request Cycle with Queues Begins
[2017-02-08 14:18:47] local.INFO: Request …Run Code Online (Sandbox Code Playgroud) 我正在使用Stripe创建支付网关.
我想将我的localhost网址设置localhost/stripe/webhook.php为我的webhook网址.是否可以将localhost地址设置为webhook URL?这将用于创建在Stripe中每次成功收费时触发的邮件服务.
我使用的是磁条支付服务,与stripe和stripe_event宝石.到目前为止一切都很好 - 他们工作得很好
我想使用stripe_eventwebhooks监听器来执行一系列操作.例如,当Stripe发送webhook通知应用新订阅时,我想将该订阅添加到subscriptions表中,向新用户发送电子邮件,建议管理员等.
在github上的(非常缺乏的)stripe_event 文档中,他们说要使用该call方法订阅一个对象,并将示例显示为
class CustomerCreated
def call(event)
# Event handling
end
end
Run Code Online (Sandbox Code Playgroud)
但是,它们不显示此代码所在的位置(将放置哪个文件)或如何调用它config/initializers/stripe.rb.
有人能提供一个如何使用这些的明确例子吗?
我正在尝试设置Facebook messenger API,当我尝试添加WebHook时,我收到此错误:
无法验证URL.回调验证失败,出现以下错误:curl_errno = 60; curl_error = SSL证书问题:无法获得本地颁发者证书; HTTP状态代码= 200; HTTP消息=已建立连接
我使用他们在教程中提供的代码设置了我的NodeJS服务器.这是网址:https://stackoverload.me/chatter/webhook
在这里编辑决议(有人想看代码):
var express = require('express');
var fs = require('fs');
var https = require('https');
var app = express();
app.use(express.static('public'));
// SSL
https.createServer(
{
ca: fs.readFileSync(__dirname + '/server.ca'),
key: fs.readFileSync(__dirname + '/server.key'),
cert: fs.readFileSync(__dirname + '/server.cert')
}
, app).listen(443, function() {
console.log('Server is now running.');
});
// HTTP redirect to SSL
express()
.get('*', function(req,res){
res.redirect('https://example.com' + req.url)
})
.listen(80);Run Code Online (Sandbox Code Playgroud)