Skip to content

Direct messaging

Ramtin Jokar edited this page Sep 12, 2018 · 17 revisions

How can I get inbox?

var inbox = await InstaApi.MessagingProcessor.GetDirectInboxAsync();

How can I get a thread?

var firstThread = inbox.Value.Inbox.Threads.FirstOrDefault();
var requestedThreadId = firstThread.ThreadId;
var threads = await InstaApi.MessagingProcessor
    .GetDirectInboxThreadAsync(requestedThreadId);

How can I get a thread by username?

var desireUsername = "rmt4006";
var desireThread = inbox.Value.Inbox.Threads
    .Find(u => u.Users.FirstOrDefault().UserName.ToLower() == desireUsername);
var requestedThreadId = desireThread.ThreadId;
var threads = await InstaApi.MessagingProcessor
    .GetDirectInboxThreadAsync(requestedThreadId);

How can I get ranked recipients?

var rankedRecipients = await InstaApi.MessagingProcessor.GetRankedRecipientsAsync();

How can I get recent recipients?

var recentRecipients = await InstaApi.MessagingProcessor
    .GetRecentRecipientsAsync();

How can I get pending direct(requests)?

var pendingDirect = await InstaApi.MessagingProcessor
    .GetPendingDirectAsync();

How can I send text by thread id?

var inbox = await InstaApi.MessagingProcessor.GetDirectInboxAsync();
var firstThread = inbox.Value.Inbox.Threads.FirstOrDefault();
var requestedThreadId = firstThread.ThreadId;

var directText = await InstaApi.MessagingProcessor
    .SendDirectTextAsync(null, requestedThreadId, "Hello Ramtin,\r\nHow are you today?");

How can I send text by username?

var desireUsername = "rmt4006";
var user = await InstaApi.UserProcessor.GetUserAsync(desireUsername);
var userId = user.Value.Pk.ToString();
var directText = await InstaApi.MessagingProcessor
    .SendDirectTextAsync(userId, null, "Hello Ramtin,\r\nHow are you today?");

How can I send text to multiple username?

var userList = new List<string>();
            
// get user id(pk) for user 1
var user1 = await InstaApi.UserProcessor.GetUserAsync("rmt4006");
// add user id(pk) 1 to userList
userList.Add(user1.Value.Pk.ToString());


// get user id(pk) for user 2
var user2 = await InstaApi.UserProcessor.GetUserAsync("alingame");
// add user id(pk) 2 to userList
userList.Add(user2.Value.Pk.ToString());

// user ids must be splitted with comma character ,
var recipients = string.Join(",", userList);
// it should be something like this:  userId1,userId2,userId3,userId3,....
// for current sample: 5318277344,719072853

var directText = await InstaApi.MessagingProcessor
    .SendDirectTextAsync(recipients, null, "Hello Ramtin,\r\nHow are you today?");

How can I send photo as direct message?

var image = new InstaImage
{
    // some photo path
    Uri = "C:\\Files\\image1.jpg"
};

var directPhoto = await InstaApi.MessagingProcessor
    .SendDirectPhotoAsync(image, requestedThreadId);

Note: only JPEG or JPG file will accept by instagram.

How can I send photo to multiple user ids as direct message?

var directPhoto = await InstaApi.MessagingProcessor
    .SendDirectPhotoToRecipientsAsync(image, "userId1", "userId2", "userId3", "....");

How can I send disappearing photo as direct message?

var directPhoto = await InstaApi.MessagingProcessor
    .SendDirectDisappearingPhotoAsync(image, InstaViewMode.Replayable, requestedThreadId);

How can I send video as direct message?

var video = new InstaVideo
{
    // some video path
    Uri = "C:\\Files\\video1.mp4"
};

var videoToUpload = new InstaVideoUpload
{
    Video = video
};

var directVideo = await InstaApi.MessagingProcessor
    .SendDirectVideoAsync(videoToUpload, requestedThreadId);

Note: only MP4 or MOV file will accept by instagram.

How can I send video to multiple user ids as direct message?

var directVideo = await InstaApi.MessagingProcessor
    .SendDirectVideoToRecipientsAsync(videoToUpload, "userId1", "userId2", "userId3", "....");

How can I send disappearing video as direct message?

var directVideo = await InstaApi.MessagingProcessor
    .SendDirectDisappearingVideoAsync(videoToUpload, InstaViewMode.Replayable, requestedThreadId);

How can I send link as direct message?

var link = "https://github.com/ramtinak/InstagramApiSharp";
var text = $"Hi, check this awesome instagram library for .net:\r\n{link}\r\nDon't forget to report issues!";

var directLink = await InstaApi.MessagingProcessor
    .SendDirectLinkAsync(text, link, requestedThreadId);

How can I send location as direct message?

// location information for Iran/Fars/Kazerun
double latitude = 29.61949;
double longitude = 51.65415;
var cityName = "Kazerun";
var locations = await InstaApi.LocationProcessor
    .SearchLocationAsync(latitude, longitude, cityName);

var cityLocation = locations.Value.FirstOrDefault();
var cityExternalId = cityLocation.ExternalId;

var directLocation = await InstaApi.MessagingProcessor
    .SendDirectLocationAsync(cityExternalId, requestedThreadId);

How can I send profile as direct message?

var user = await InstaApi.UserProcessor.GetUserAsync("rmt4006");
var userId = user.Value.Pk;

var directProfile = await InstaApi
    .MessagingProcessor.SendDirectProfileAsync(userId, requestedThreadId);

You can check this quick sample: Direct messaging example class

Clone this wiki locally