Skip to content
This repository was archived by the owner on Oct 31, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions LiveChatApi/LiveChatApi/Field.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LiveChatApi
{
public class Field
{
public string Name { get; set; }

public string Value { get; set; }

public string Url { get; set; }
}
}
1 change: 1 addition & 0 deletions LiveChatApi/LiveChatApi/LiveChatApi.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
<Compile Include="Archives.cs" />
<Compile Include="Chat.cs" />
<Compile Include="Constants.cs" />
<Compile Include="Field.cs" />
<Compile Include="Goals.cs" />
<Compile Include="Greetings.cs" />
<Compile Include="Groups.cs" />
Expand Down
16 changes: 12 additions & 4 deletions LiveChatApi/LiveChatApi/Visitors.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,24 @@ public async Task<string> List(Dictionary<string, string> parameters = null)
return await Api.Get(uri);
}

public async Task<string> AddCustomDetails(string visitorID, string licenseID, string token, string id, Dictionary<string, string> fields, string icon = "")
public async Task<string> AddCustomDetails(string visitorID, string licenseID, string token, string id, IEnumerable<Field> fields, string icon = "")
{
string uri = string.Format("visitors/{0}/details", HttpUtility.UrlEncode(visitorID));
string content = string.Format("license_id={0}&token={1}&id={2}", HttpUtility.UrlEncode(licenseID), HttpUtility.UrlEncode(token), HttpUtility.UrlEncode(id));
if (fields != null && fields.Count > 0)
if (fields != null && fields.Count() > 0)
{
int i = 0;
foreach (var keyValuePair in fields)
foreach (var field in fields)
{
content += string.Format("&fields[{0}][name]={1}&fields[{0}][value]={2}", i, HttpUtility.UrlEncode(keyValuePair.Key), HttpUtility.UrlEncode(keyValuePair.Value));
string encodedName = HttpUtility.UrlEncode(field.Name);
string encodedValue = HttpUtility.UrlEncode(field.Value);
string encodedUrl = HttpUtility.UrlEncode(field.Url);

if (String.IsNullOrWhiteSpace(field.Url))
content += string.Format("&fields[{0}][name]={1}&fields[{0}][value]={2}", i, encodedName, encodedValue);
else
content += string.Format("&fields[{0}][name]={1}&fields[{0}][value]={2}&fields[{0}][url]={3}", i, encodedName, encodedValue, encodedUrl);

i++;
}
}
Expand Down
7 changes: 4 additions & 3 deletions LiveChatApi/LiveChatApiExample/ApiExample.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using LiveChatApi;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Expand Down Expand Up @@ -599,8 +600,8 @@ public async Task VisitorsTest()
string licenseID = "123456";
string token = "bad02a95a61a44bd466b9cdd262ac6a0";
string id = "my-app";
Dictionary<string, string> fields = new Dictionary<string, string>();
fields.Add("name1", "value1");
List<Field> fields = new List<Field>();
fields.Add( new Field { Name = "name1", Value = "value1" });
result = await Api.Visitors.AddCustomDetails(visitorID, licenseID, token, id, fields);
Console.WriteLine(result);

Expand Down