随着数字货币市场的兴起,越来越多的人开始关注并投资于加密货币。为了不错过投资机会,实时监控加密货币价格变动变得尤为重要。本文将介绍如何使用PHP和RingCentral的API来监控特定加密货币的价格变动,并通过短信进行通知。
在众多加密货币中,比特币金库(Bitcoin Vault)引起了注意。它是一种新型的去中心化加密货币,具有防盗解决方案,已在三个交易所上市。决定开始挖掘这种货币,并在miningcity.com上进行。
为了实时监控比特币金库的价格变动,决定编写一个脚本,当价格与上次检查相比变化超过10美元(无论是上涨还是下跌)时,通过RingCentral的API发送短信通知。
要实现这个功能,需要以下工具:
使用CoinMarketCap来检查加密货币的价格,因此需要访问并创建一个新的免费开发者账户。
创建了一个名为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'。
现在已经获得了比特币金库的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);
?>
这将打印出感兴趣的响应部分,即价格。
为了比较价格,至少需要一个起始点来进行比较,因此需要创建一个文件来保存当前价格。创建一个名为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价格更新了。
现在让继续有趣的部分,当价格发生变化时获得提醒。对于本教程,想知道当价格上升或下降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密钥。使用了一个较低和一个较高的价格进行了几个示例测试。以下是测试结果:
在上一个教程中,解释了什么是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