加密货币价格监控与短信通知系统

随着数字货币市场的兴起,越来越多的人开始关注并投资于加密货币。为了不错过投资机会,实时监控加密货币价格变动变得尤为重要。本文将介绍如何使用PHP和RingCentral的API来监控特定加密货币的价格变动,并通过短信进行通知。

选择加密货币

在众多加密货币中,比特币金库(Bitcoin Vault)引起了注意。它是一种新型的去中心化加密货币,具有防盗解决方案,已在三个交易所上市。决定开始挖掘这种货币,并在miningcity.com上进行。

监控价格变动

为了实时监控比特币金库的价格变动,决定编写一个脚本,当价格与上次检查相比变化超过10美元(无论是上涨还是下跌)时,通过RingCentral的API发送短信通知

所需工具

要实现这个功能,需要以下工具:

  • RingCentral开发者账户
  • PHP环境
  • CoinMarketCap API
  • Cron Job

步骤1:创建CoinMarketCap API

使用CoinMarketCap来检查加密货币的价格,因此需要访问并创建一个新的免费开发者账户。

步骤2:编写PHP脚本

创建了一个名为RingCentral的文件夹,并添加了一个名为cryptoCurrency.php的PHP文件。打开这个空文件,并复制以下代码:

<?php $url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/map'; $parameters = [ 'symbol' => 'BTC,BTCV' ]; $headers = [ 'Accepts: application/json', 'X-CMC_PRO_API_KEY: b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c' ]; $qs = http_build_query($parameters); $request = "{$url}?{$qs}"; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $request, CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => 1 )); $response = curl_exec($curl); print_r(json_decode($response)); curl_close($curl); ?>

在这个示例中,使用了/map端点。请确保使用自己的API密钥,否则它将无法工作。运行脚本后,将获取发送在有效载荷参数中的符号的所有数据:'symbol' => 'BTC,BTCV'。

步骤3:获取当前价格

现在已经获得了比特币金库的ID(5175),让使用将获取当前价格的端点:/v1/cryptocurrency/quotes/latest。复制以下脚本:

<?php $url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest'; $parameters = [ 'id' => '5175' ]; $headers = [ 'Accepts: application/json', 'X-CMC_PRO_API_KEY: b5f708a1-3c63-4152-9e37-3a4a883e3820' ]; $qs = http_build_query($parameters); $request = "{$url}?{$qs}"; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $request, CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => 1 )); $response = curl_exec($curl); $result = json_decode($response,true); print_r($result['data']['5175']['quote']['USD']); curl_close($curl); ?>

这将打印出感兴趣的响应部分,即价格。

步骤4:创建并更新价格文件

为了比较价格,至少需要一个起始点来进行比较,因此需要创建一个文件来保存当前价格。创建一个名为currentBitcoinVaultValue.txt的文件,并添加值10。

将在脚本中添加代码,读取文件中的当前值,然后使用从API读取的当前比特币金库价格更新它。复制以下脚本,它将读取BitcoinVault的当前价格并将其保存到.txt文件中:

<?php $url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest'; $parameters = [ 'id' => '5175' ]; $headers = [ 'Accepts: application/json', 'X-CMC_PRO_API_KEY: b5f708a1-3c63-4152-9e37-3a4a883e3820' ]; $qs = http_build_query($parameters); $request = "{$url}?{$qs}"; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $request, CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => 1 )); $response = curl_exec($curl); $result = json_decode($response,true); $currentBitcoinVaultPrice = $result['data']['5175']['quote']['USD']['price']; curl_close($curl); $fileName = 'currentBitcoinVaultValue.txt'; $processFile = fopen($fileName, "r") or die("Unable to open file!"); $oldPrice = fgets($processFile); file_put_contents($fileName, $currentBitcoinVaultPrice); ?>

现在,.txt文件已经用当前的BitcoinVault价格更新了。

步骤5:添加RingCentral的短信API到脚本

现在让继续有趣的部分,当价格发生变化时获得提醒。对于本教程,想知道当价格上升或下降10美元时。所以让先添加RingCentral短信API。

不会详细介绍如何在RingCentral上设置账户。可以按照这个,查看步骤5(设置RingCentral短信API)。它非常简单快捷,可以快速获得开发者账户。

让添加RingCentral的API,脚本应该看起来像这样:

<?php require('vendor/autoload.php'); // CoinMarketCap API $url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest'; $parameters = [ 'id' => '5175' ]; $headers = [ 'Accepts: application/json', 'X-CMC_PRO_API_KEY: b5f708a1-3c63-4152-9e37-3a4a883e3820' ]; $qs = http_build_query($parameters); $request = "{$url}?{$qs}"; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $request, CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => 1 )); $response = curl_exec($curl); $result = json_decode($response,true); $currentBitcoinVaultPrice = $result['data']['5175']['quote']['USD']['price']; curl_close($curl); $fileName = 'currentBitcoinVaultValue.txt'; $processFile = fopen($fileName, "r") or die("Unable to open file!"); $oldPrice = fgets($processFile); file_put_contents($fileName, $currentBitcoinVaultPrice); $calc = (float)$currentBitcoinVaultPrice - (float)$oldPrice; if ($calc >= 10) { smsRingCentralAlert('Bitcoin Vault has gone up to ' . $currentBitcoinVaultPrice); } if ($calc <= -10) { smsRingCentralAlert('Bitcoin Vault has gone down to ' . $currentBitcoinVaultPrice); } // Call Ring Central SMS API function smsRingCentralAlert($message) { $RECIPIENT = 'YOUR-TEST-PHONE-NUMBER'; $RINGCENTRAL_CLIENTID = 'YOUR-CLIENT-ID'; $RINGCENTRAL_CLIENTSECRET = 'YOUR-SECRET'; $RINGCENTRAL_SERVER = 'https://platform.devtest.ringcentral.com'; $RINGCENTRAL_USERNAME = 'YOUR-USERNAME'; $RINGCENTRAL_PASSWORD = 'YOUR-PASSWORD'; $RINGCENTRAL_EXTENSION = 'YOUR-EXTENSION'; $rcsdk = new RingCentral\SDK\SDK($RINGCENTRAL_CLIENTID, $RINGCENTRAL_CLIENTSECRET, $RINGCENTRAL_SERVER); $platform = $rcsdk->platform(); $platform->login($RINGCENTRAL_USERNAME, $RINGCENTRAL_EXTENSION, $RINGCENTRAL_PASSWORD); $platform->post( '/account/~/extension/~/sms', array( 'from' => array( 'phoneNumber' => $RINGCENTRAL_USERNAME ), 'to' => array( array( 'phoneNumber' => $RECIPIENT ) ), 'text' => $message ) ); } ?>

请确保使用自己的API密钥。使用了一个较低和一个较高的价格进行了几个示例测试。以下是测试结果:

步骤6:最终步骤Cron Job

在上一个教程中,解释了什么是cron作业以及如何设置它。可以在这里查看所有细节。

对于这个示例,将创建一个cron作业,每小时触发脚本。要创建一个cron作业,只需打开CLI并输入:

crontab -e

确保检查PHP EXE的当前路径。这个命令会有所帮助:

whereis php

PHP路径通常是:

/usr/bin/php

运行crontab后,很可能会打开一个编辑器,这是用于这个示例的cron示例,每小时运行一次:

0 */1 * * * /usr/bin/php /Users/juan/DEV/RingCentral/cryptoCurrency.php > /tmp/stdout.log 2>/tmp/stderr.log
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485