@olastudio/social-media-sdk 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -949,6 +949,111 @@ var FacebookAPI = class {
949
949
  getApiVersion() {
950
950
  return FACEBOOK_GRAPH_API_VERSION;
951
951
  }
952
+ // ============= Messaging Methods =============
953
+ /**
954
+ * Get conversations (inbox) for a Facebook Page
955
+ * Requires `pages_messaging` permission
956
+ *
957
+ * @param pageId - Facebook Page ID
958
+ * @param options - Pagination and field options
959
+ * @returns Paginated list of conversations
960
+ */
961
+ async getPageConversations(pageId, options = {}) {
962
+ try {
963
+ const defaultFields = [
964
+ "id",
965
+ "participants",
966
+ "updated_time",
967
+ "unread_count",
968
+ "snippet",
969
+ "can_reply",
970
+ "messages.limit(1){id,message,from,created_time}"
971
+ ];
972
+ const params = {
973
+ fields: (options.fields || defaultFields).join(","),
974
+ limit: options.limit || 25
975
+ };
976
+ if (options.after) {
977
+ params.after = options.after;
978
+ }
979
+ const response = await this.get(`/${pageId}/conversations`, params);
980
+ return response;
981
+ } catch (error) {
982
+ throw new APIError(
983
+ `Failed to fetch page conversations: ${error instanceof Error ? error.message : "Unknown error"}`,
984
+ void 0,
985
+ "CONVERSATIONS_FETCH_ERROR",
986
+ error
987
+ );
988
+ }
989
+ }
990
+ /**
991
+ * Get messages from a specific conversation
992
+ *
993
+ * @param conversationId - Conversation ID
994
+ * @param options - Pagination options
995
+ * @returns Paginated list of messages
996
+ */
997
+ async getConversationMessages(conversationId, options = {}) {
998
+ try {
999
+ const defaultFields = [
1000
+ "id",
1001
+ "message",
1002
+ "from",
1003
+ "to",
1004
+ "created_time",
1005
+ "attachments"
1006
+ ];
1007
+ const params = {
1008
+ fields: (options.fields || defaultFields).join(","),
1009
+ limit: options.limit || 25
1010
+ };
1011
+ if (options.after) {
1012
+ params.after = options.after;
1013
+ }
1014
+ const response = await this.get(`/${conversationId}/messages`, params);
1015
+ return response;
1016
+ } catch (error) {
1017
+ throw new APIError(
1018
+ `Failed to fetch conversation messages: ${error instanceof Error ? error.message : "Unknown error"}`,
1019
+ void 0,
1020
+ "MESSAGES_FETCH_ERROR",
1021
+ error
1022
+ );
1023
+ }
1024
+ }
1025
+ /**
1026
+ * Send a message in a conversation
1027
+ * Uses the Send API for Page messaging
1028
+ *
1029
+ * @param pageId - Facebook Page ID
1030
+ * @param recipientId - PSID (Page-Scoped User ID) of the recipient
1031
+ * @param message - Message text to send
1032
+ * @param pageAccessToken - Page access token with messaging permission
1033
+ * @returns Message send response
1034
+ */
1035
+ async sendMessage(pageId, recipientId, message, pageAccessToken) {
1036
+ try {
1037
+ const body = {
1038
+ recipient: { id: recipientId },
1039
+ message: { text: message },
1040
+ messaging_type: "RESPONSE",
1041
+ access_token: pageAccessToken || this.accessToken
1042
+ };
1043
+ const response = await this.post(
1044
+ `/${pageId}/messages`,
1045
+ body
1046
+ );
1047
+ return response;
1048
+ } catch (error) {
1049
+ throw new APIError(
1050
+ `Failed to send message: ${error instanceof Error ? error.message : "Unknown error"}`,
1051
+ void 0,
1052
+ "MESSAGE_SEND_ERROR",
1053
+ error
1054
+ );
1055
+ }
1056
+ }
952
1057
  };
953
1058
 
954
1059
  // providers/facebook/auth/FacebookAuth.ts
@@ -1779,6 +1884,105 @@ var InstagramAPI = class {
1779
1884
  getApiVersion() {
1780
1885
  return FACEBOOK_GRAPH_API_VERSION;
1781
1886
  }
1887
+ // ============= Messaging Methods =============
1888
+ /**
1889
+ * Get conversations (inbox) for an Instagram Professional account
1890
+ * Requires `instagram_manage_messages` permission
1891
+ *
1892
+ * @param instagramAccountId - Instagram Business/Creator Account ID
1893
+ * @param options - Pagination and field options
1894
+ * @returns Paginated list of conversations
1895
+ */
1896
+ async getConversations(instagramAccountId, options = {}) {
1897
+ try {
1898
+ const defaultFields = [
1899
+ "id",
1900
+ "participants",
1901
+ "updated_time",
1902
+ "messages.limit(1){id,message,from,created_time}"
1903
+ ];
1904
+ const params = {
1905
+ fields: (options.fields || defaultFields).join(","),
1906
+ limit: options.limit || 25
1907
+ };
1908
+ if (options.after) {
1909
+ params.after = options.after;
1910
+ }
1911
+ const response = await this.get(`/${instagramAccountId}/conversations`, params);
1912
+ return response;
1913
+ } catch (error) {
1914
+ throw new APIError(
1915
+ `Failed to fetch Instagram conversations: ${error instanceof Error ? error.message : "Unknown error"}`,
1916
+ void 0,
1917
+ "CONVERSATIONS_FETCH_ERROR",
1918
+ error
1919
+ );
1920
+ }
1921
+ }
1922
+ /**
1923
+ * Get messages from a specific Instagram conversation
1924
+ *
1925
+ * @param conversationId - Conversation ID
1926
+ * @param options - Pagination options
1927
+ * @returns Paginated list of messages
1928
+ */
1929
+ async getConversationMessages(conversationId, options = {}) {
1930
+ try {
1931
+ const defaultFields = [
1932
+ "id",
1933
+ "message",
1934
+ "from",
1935
+ "to",
1936
+ "created_time",
1937
+ "attachments"
1938
+ ];
1939
+ const params = {
1940
+ fields: (options.fields || defaultFields).join(","),
1941
+ limit: options.limit || 25
1942
+ };
1943
+ if (options.after) {
1944
+ params.after = options.after;
1945
+ }
1946
+ const response = await this.get(`/${conversationId}/messages`, params);
1947
+ return response;
1948
+ } catch (error) {
1949
+ throw new APIError(
1950
+ `Failed to fetch Instagram messages: ${error instanceof Error ? error.message : "Unknown error"}`,
1951
+ void 0,
1952
+ "MESSAGES_FETCH_ERROR",
1953
+ error
1954
+ );
1955
+ }
1956
+ }
1957
+ /**
1958
+ * Send a message to an Instagram user
1959
+ * Uses the Instagram Send API
1960
+ *
1961
+ * @param instagramAccountId - Instagram Business/Creator Account ID
1962
+ * @param recipientId - Instagram-scoped ID of the recipient
1963
+ * @param message - Message text to send
1964
+ * @returns Message send response
1965
+ */
1966
+ async sendMessage(instagramAccountId, recipientId, message) {
1967
+ try {
1968
+ const body = {
1969
+ recipient: { id: recipientId },
1970
+ message: { text: message }
1971
+ };
1972
+ const response = await this.post(
1973
+ `/${instagramAccountId}/messages`,
1974
+ body
1975
+ );
1976
+ return response;
1977
+ } catch (error) {
1978
+ throw new APIError(
1979
+ `Failed to send Instagram message: ${error instanceof Error ? error.message : "Unknown error"}`,
1980
+ void 0,
1981
+ "MESSAGE_SEND_ERROR",
1982
+ error
1983
+ );
1984
+ }
1985
+ }
1782
1986
  };
1783
1987
 
1784
1988
  // providers/instagram/InstagramProvider.ts