Initial commit
This commit is contained in:
commit
1c5fa2e6c7
|
@ -0,0 +1,9 @@
|
||||||
|
################################################################################
|
||||||
|
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
/.vs
|
||||||
|
/obj
|
||||||
|
/TwilioDDT.sln
|
||||||
|
/TwilioDDT.csproj
|
||||||
|
/Credentials.cs
|
|
@ -0,0 +1,154 @@
|
||||||
|
using System.Data.SqlClient;
|
||||||
|
using Twilio;
|
||||||
|
using Twilio.Types;
|
||||||
|
using Twilio.Rest.Api.V2010.Account;
|
||||||
|
|
||||||
|
public class TwilioDDT
|
||||||
|
{
|
||||||
|
Dictionary<string, string> results = new Dictionary<string, string>();
|
||||||
|
|
||||||
|
public static void Main(string[] args)
|
||||||
|
{
|
||||||
|
string PhoneNumber = "";
|
||||||
|
string[] NumbersToText = ["248-891-3712"];
|
||||||
|
|
||||||
|
TextAgent agent = new TextAgent(PhoneNumber, NumbersToText);
|
||||||
|
var message = "";
|
||||||
|
|
||||||
|
var results = agent.SendTexts(message);
|
||||||
|
Console.WriteLine(results.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TextAgent
|
||||||
|
{
|
||||||
|
// Class Variables
|
||||||
|
PhoneNumber PhoneNumber; // Number to send from
|
||||||
|
string[] InputNumbers = Array.Empty<string>(); // Numbers to blast to
|
||||||
|
|
||||||
|
public TextAgent(string ShopNumber, string[] TargetList)
|
||||||
|
{
|
||||||
|
PhoneNumber = new PhoneNumber(ShopNumber);
|
||||||
|
InputNumbers = TargetList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Dictionary<string, string> SendTexts(string GenericMessage)
|
||||||
|
{
|
||||||
|
if (InputNumbers.Length < 1 || GenericMessage.Length < 1)
|
||||||
|
{
|
||||||
|
// Input data is invalid; do not initiate sequence
|
||||||
|
|
||||||
|
//
|
||||||
|
return new Dictionary<string, string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize SQL Agent
|
||||||
|
SqlDriver db = new SqlDriver("CONN_STRING");
|
||||||
|
db.GatherUsers("SQL_QUERY_TO_GET_USERS");
|
||||||
|
// TODO: read values from table into list
|
||||||
|
|
||||||
|
var result = new Dictionary<string, string>();
|
||||||
|
foreach (string current in InputNumbers) // TODO: replace this with the rows in db
|
||||||
|
{
|
||||||
|
// TODO: Use values from SQL list as the fields here
|
||||||
|
|
||||||
|
// Logic to add customer's name in the generic message
|
||||||
|
Console.WriteLine(GenericMessage);
|
||||||
|
var custName = "Josh Deck"; // Replace with lookup when data is provided
|
||||||
|
var properMessage = string.Format("Hi {},\nStop in at Global Oil Change Center during the month of May and get $10 Off your Full Synthetic Oil Change and a free set of wiper blades. Show this text to receive discount. From your friends at Global Oil in Troy. Please reply STOP to end texts.", custName);
|
||||||
|
var currentResult = SendMessage(properMessage, current);
|
||||||
|
result.Add(currentResult[0], currentResult[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private string[] SendMessage(string Message, string Destination)
|
||||||
|
{
|
||||||
|
var result = new string[] { };
|
||||||
|
var DestinationNumber = new PhoneNumber(Destination);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TwilioClient.Init(Credentials.TwilioSID, Credentials.TwilioAuthToken);
|
||||||
|
var message = MessageResource.Create(
|
||||||
|
to: DestinationNumber,
|
||||||
|
from: PhoneNumber,
|
||||||
|
body: Message
|
||||||
|
);
|
||||||
|
|
||||||
|
result = [Destination, Message];
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
result = [Destination, ex.Message];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SqlDriver
|
||||||
|
{
|
||||||
|
private SqlConnection? conn = null;
|
||||||
|
private List<Dictionary<string, string>>? data = null;
|
||||||
|
|
||||||
|
public SqlDriver(string connectionString)
|
||||||
|
{
|
||||||
|
conn = new SqlConnection(connectionString);
|
||||||
|
}
|
||||||
|
public void GatherUsers(string query)
|
||||||
|
{
|
||||||
|
if (conn == null || data != null)
|
||||||
|
{
|
||||||
|
// Report error
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
data = new List<Dictionary<string, string>> { };
|
||||||
|
using (SqlCommand command = new SqlCommand(query, conn))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
SqlDataReader reader = command.ExecuteReader();
|
||||||
|
|
||||||
|
Dictionary<string, string> column;
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
// Empty out the column
|
||||||
|
column = new Dictionary<string, string>();
|
||||||
|
|
||||||
|
// Read the data from the table
|
||||||
|
// TODO: get actual fields needed
|
||||||
|
column["NAME"] = reader["NAME"].ToString();
|
||||||
|
|
||||||
|
data.Add(column);
|
||||||
|
}
|
||||||
|
conn.Close();
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Handle the error and/or cry
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public void ReportText()
|
||||||
|
{
|
||||||
|
if (conn == null)
|
||||||
|
{
|
||||||
|
// Report error
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
using (SqlCommand command = new SqlCommand("PROCEDURE_NAME", conn) { CommandType = System.Data.CommandType.StoredProcedure })
|
||||||
|
{
|
||||||
|
// TODO: add parameters to SP
|
||||||
|
conn.Open();
|
||||||
|
command.ExecuteNonQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue