php - 如果用户在一段时间后没有交互,请执行一些操作 - PHP
问题描述
我正在构建一个 whatsapp 机器人,该机器人可以完全运行,但如果用户在一段时间后不与 api 交互,我想做一个 API 调用。我尝试使用会话,但不工作,我尝试了以下代码。
session_start();
//**my bot code**
$minutesBeforeSessionExpire=30;
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > (2))) {
$data2 = [
'phone' => $_SESSION['phone'],
'body' => 'Hello, Andrew!',
];
$json2 = json_encode($data2);
$options2 = stream_context_create(['http' => [
'method' => 'POST',
'header' => 'Content-type: application/json',
'content' => $json2
]
]);
$result2 = file_get_contents('api_call', false, $options2);
session_unset(); // unset $_SESSION
session_destroy(); // destroy session data
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity
解决方案
不幸的是,“任何 API”都是纯粹的“服务器端”。因此,当任何人“未回复”时,它无法“做出反应”。它唯一能做的就是,在收到 [任何……] 后续请求时,说:“对不起,太晚了!”
关键是响应是被动的,而不是主动的。
推荐阅读
- laravel - 在 Laravel 中调用 api 的未经身份验证的错误代码
- dictionary - Universe 字典项在多值字段中提取属性的第一个字符
- javascript - 无效的 GeoJson 对象 onemap 传单
- javascript - 避免在每个请求上验证 jwt 令牌
- featuretools - Featuretools 可以从一组特征中选择一组特征吗?
- php - 根据 Woocommerce 中的产品类别限制最大商品数量
- average - Coremltools:如何从输入图像中减去图像的平均值?
- python - 根据选择刷新下拉菜单 - Django Smartmin
- android - Gradle 同步失败:没有可用于离线模式的缓存版本
- bash - 如何在 sh 中进行十六进制转换