-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSendTextMessageFunction.cs
More file actions
75 lines (70 loc) · 2.29 KB
/
Copy pathSendTextMessageFunction.cs
File metadata and controls
75 lines (70 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/**
* This is a sample Lambda function that sends an SMS on click of a
* button. It needs one permission sns:Publish. The following policy
* allows SNS publish to SMS but not topics or endpoints.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": [
"*"
]
},
{
"Effect": "Deny",
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:*:*:*"
]
}
]
}
*
* The following JSON template shows what is sent as the payload:
{
"serialNumber": "GXXXXXXXXXXXXXXXXX",
"batteryVoltage": "xxmV",
"clickType": "SINGLE" | "DOUBLE" | "LONG"
}
*
* A "LONG" clickType is sent if the first press lasts longer than 1.5 seconds.
* "SINGLE" and "DOUBLE" clickType payloads are sent for short clicks.
*
* For more documentation, follow the link below.
* http://docs.aws.amazon.com/iot/latest/developerguide/iot-lambda-rule.html
*/
using System;
using System.Threading.Tasks;
using Amazon.Lambda.Core;
using Amazon.SimpleNotificationService;
using Amazon.SimpleNotificationService.Model;
using Aws.Lambda.Models;
using Newtonsoft.Json;
namespace Aws.Lambda
{
public class SendTextMessageFunction
{
private readonly AmazonSimpleNotificationServiceClient _sns = new AmazonSimpleNotificationServiceClient();
private const string PnoneNumberEnvironmentKey = "PhoneNumber";
[LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
public Task ButtonHandler(IotButtonEvent buttonEvent, ILambdaContext context)
{
var phoneNumber = Environment.GetEnvironmentVariable(PnoneNumberEnvironmentKey);
var payload = JsonConvert.SerializeObject(buttonEvent);
Console.WriteLine($"Received event: {payload}");
Console.WriteLine($"Sending SMS to {phoneNumber}");
var request = new PublishRequest
{
PhoneNumber = phoneNumber,
Message = $"Hello from your IoT Button ${buttonEvent.SerialNumber}. Here is the full event: ${payload}."
};
return _sns.PublishAsync(request);
}
}
}