由Andy Warr.
这是星期六晚上,我的妻子和我正准备出去。我们几乎准备就绪,是时候打电话给优步时间了。要做我们必须:
- 找到我们的电话
- 解锁手机
- 找到优步应用程序
- 打开Uber应用程序
- 选择服务e.g.Uberx.
- 定位PIN.
- 设置拾取位置
- 要求驾驶员
这是很多工作!必须有更容易的方式!
我最近购买了一个亚马逊Web服务(AWS)互联网(IOT)按钮。AWS IOT按钮是基于的可编程按钮亚马逊dash按钮 — a Wi-Fi connected device that reorders your favorite product with the press of a button.
我想到了自己,如果可以使用亚马逊Dash按钮用按钮的按钮来订购产品,可以编程AWS IOT按钮以请求超级。
我不是第一个拥有这个想法的人。Geoffrey Tisserand.2015年10月写了一篇中型文章,描述了如何用AWS IOT按钮召唤优惠并且有黑客攻击了一个亚马逊仪表按钮来订购超级骑行2015年9月。
Geoffrey Tisserand.发表了他的代码到github — thank you — so I forked his repo and made some edits. The edits I made related to one of the open issues:使用不同类型的按钮按下。具体来说,如果按下按钮,它会要求uberx;如果按下两次按钮,它会要求uberblack;并且,如果按下按钮并按住它会取消请求的优步。我也想自动处理浪涌定价。当我打电话给优步时,我一般需要去那一刻的某个地方,因此愿意接受浪涌定价。
在本文中,我不会介绍如何设置AWS IOT按钮。你可以参考AWS IOT按钮产品页面和逐步教程对于这些信息。相反,我将专注于我实现的具体细节。
检测按钮状态
按下AWS IOT按钮时,它会发送JSON对象AWS端点,可以传递给AWS lambda.。
{“serialnumber”:“gxxxxxxxxxxxxxxxx”,“电池电压”:“mv”,“clicktype”:“单身|双人间|长” }
可以使用条件语句来检测ClickType。
https://gist.github.com/andywarr/97a29052c0f194701546d2146d3c7e3e.
在单击条件下,请求uberx,请求uberblack进行双击条件。这是通过将uberx或uberblack传递给请求功能来实现的。您可以找到有关获取Product_ID的更多信息这里。在长次条件下,通过调用Canceluber函数取消优步请求。
请求超级服务
请求优步需要进行HTTP POST请求。该请求包括接送位置的纬度和经度。当用户可能希望通过每个按下按钮时,不包括目的地的纬度和经度。用户可以改为将目的地输入Uber应用程序或告诉驱动程序。然而,不知道最终目的地确实阻止了uberpool等服务。HTTP POST请求还包括所请求的服务的Product_ID,其根据ClickType传递给请求功能。
https://gist.github.com/andywarr/c2d373bec3492a95ad4a3975500f170f
假设HTTP POST请求成功,UBER API返回HTTP状态代码202。
接受浪涌定价
有时有浪涌定价生效。在这些情况下,用户必须明确接受浪涌定价。但是,这需要额外的互动。如前所述,当我称之为优步时,我通常需要在那一刻的某个地方去,因此愿意接受浪涌定价。因此,我的代码会自动接受浪涌定价。
https://gist.github.com/andywarr/9f7684dccf28cba0ae24fc8ebc647eb5
如果浪涌定价有效,则Uber API返回HTTP状态代码409,以及包括SCROG_CONFIRMATION_ID属性的JSON对象。使用HTTP Get请求用户必须接受浪涌定价的网页的HTML代码。此网页包含一个CSRF_Token,可以使用HTTP POST请求发布到网页以获取SCRG_CONFIRMATION_TOKET。为贺卡方式道歉CSRF_Token是从上面代码中的HTML中提取的。返回的surge_confirmation_token表示用户愿意接受浪涌定价。通过将Surge_confirmation _Token再次请求Uber,因为Surge_confirmation_ID参数将成功请求具有浪涌定价的优步。
取消一个超级
可以使用a取消超级器http删除请求,这将取消最后一个请求的优步。
https://gist.github.com/andywarr/7f18f95c4654ef7083edb58e09c8f8b6
优步按钮
总结Uber按钮的按钮可以:
- 请求Uberx(自动接受浪涌定价)
- 请求Uberblack(自动接受浪涌定价)
- 取消优步
使用功能按钮唯一剩下的是装饰它。可以找到I为AWS IOT按钮创建的Photoshop模板这里和我的AWS Lambda函数的代码可在github上使用。





