Из API графа добраться до me/inbox
набор результатов дает идентификатор как часть каждого возвращаемого объекта. Это также thread_id.
Если идентификатор, который у вас есть, является строковым объектом (возможно, guid), это из старой структуры хранения системы сообщений Facebook. Теперь они обновлены до новой структуры хранения, которая требует переноса старых в новую
Итак, у вас есть довольно простая проверка:
Если идентификатор потока длинный (Int64 / BigInt), то у вас есть новый поток и вы можете использовать
http://www.facebook.com/messages/?action=read&tid=id.THREAD_ID
Если идентификатор потока является строкой, значит, у вас более старая тема и вы можете использовать
http://www.facebook.com/messages/?action=read&tid=THREAD_ID
Многие языки программирования имеют свою собственную форму проверки типа значения.
var threadId = (string)data.thread_id;
var longVal = 0L;
var isLong = Int64.TryParse(threadId, out longVal);
var threadUrl = (isLong) ?
"http://www.facebook.com/messages/?action=read&tid=id." + threadId :
"http://www.facebook.com/messages/?action=read&tid=" + threadId;