From 7419f6631986a0f8564ccb97eed4fde7b441aaca Mon Sep 17 00:00:00 2001 From: Teeh Amaral Date: Tue, 9 Jan 2024 13:22:24 -0300 Subject: [PATCH 1/3] feat: fetchMessage on media message sent --- services/tickets/twilioflex/client.go | 12 ++++++++++++ services/tickets/twilioflex/web.go | 12 +++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/services/tickets/twilioflex/client.go b/services/tickets/twilioflex/client.go index 27c1bdd10..5cd14f5df 100644 --- a/services/tickets/twilioflex/client.go +++ b/services/tickets/twilioflex/client.go @@ -260,6 +260,18 @@ func (c *Client) FetchMedia(mediaSid string) (*Media, *httpx.Trace, error) { return response, trace, err } +// FetchMessage fetch a twilio flex Message by this sid. +func (c *Client) FetchMessage(messageSid string, channelSid string) (*ChatMessage, *httpx.Trace, error) { + fetchUrl := fmt.Sprintf("https://chat.twilio.com/v2/Services/%s/Channels/%s/Messages/%s", c.serviceSid, channelSid, messageSid) + response := &ChatMessage{} + data := url.Values{} + trace, err := c.get(fetchUrl, data, response) + if err != nil { + return nil, trace, err + } + return response, trace, err +} + // https://www.twilio.com/docs/chat/rest/user-resource#user-properties type ChatUser struct { AccountSid string `json:"account_sid,omitempty"` diff --git a/services/tickets/twilioflex/web.go b/services/tickets/twilioflex/web.go index dc84259d8..6fb9b7e2b 100644 --- a/services/tickets/twilioflex/web.go +++ b/services/tickets/twilioflex/web.go @@ -8,12 +8,12 @@ import ( "github.com/go-chi/chi" "github.com/nyaruka/gocommon/uuids" + "github.com/nyaruka/goflow/assets" + "github.com/nyaruka/goflow/flows" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/runtime" "github.com/nyaruka/mailroom/services/tickets" "github.com/nyaruka/mailroom/web" - "github.com/nyaruka/goflow/assets" - "github.com/nyaruka/goflow/flows" "github.com/pkg/errors" ) @@ -95,10 +95,16 @@ func handleEventCallback(ctx context.Context, rt *runtime.Runtime, r *http.Reque } file, err := tickets.FetchFile(mediaContent.Links.ContentDirectTemporary, nil) file.ContentType = mediaContent.ContentType + + message, _, err := client.FetchMessage(request.MessageSid, request.ChannelSid) + if err != nil { + return err, http.StatusBadRequest, nil + } + if err != nil { return errors.Wrapf(err, "error fetching ticket file '%s'", mediaContent.Links.ContentDirectTemporary), http.StatusBadRequest, nil } - _, err = tickets.SendReply(ctx, rt, ticket, request.Body, []*tickets.File{file}) + _, err = tickets.SendReply(ctx, rt, ticket, message.Body, []*tickets.File{file}) if err != nil { return err, http.StatusBadRequest, nil } From 23c54e87b9b5f04a479b8a982083d4fc128b77fe Mon Sep 17 00:00:00 2001 From: Teeh Amaral Date: Tue, 9 Jan 2024 13:47:22 -0300 Subject: [PATCH 2/3] tests --- services/tickets/twilioflex/client_test.go | 42 +++++++++++++++++++ .../twilioflex/testdata/event_callback.json | 20 +++++++++ 2 files changed, 62 insertions(+) diff --git a/services/tickets/twilioflex/client_test.go b/services/tickets/twilioflex/client_test.go index 719058b34..41af6438b 100644 --- a/services/tickets/twilioflex/client_test.go +++ b/services/tickets/twilioflex/client_test.go @@ -436,3 +436,45 @@ func TestFetchMedia(t *testing.T) { assert.Equal(t, "ME59b872f1e52fbd6fe6ad956bbb4fa9bd", response.Sid) assert.Equal(t, "HTTP/1.0 200 OK\r\nContent-Length: 1342\r\n\r\n", string(trace.ResponseTrace)) } + +func TestFetchMessage(t *testing.T) { + messageSid := "IM40d3a2b3404b4a10a1c914e8d780b3cc" + channelSid := "CHc73a3d9cf9f44afc8500ab01ce8ee0b9" + defer httpx.SetRequestor(httpx.DefaultRequestor) + httpx.SetRequestor(httpx.NewMockRequestor(map[string][]httpx.MockResponse{ + fmt.Sprintf("https://chat.twilio.com/v2/Services/IS83760ec293f6814bc6f5de5612f21fc2/Channels/%s/Messages/%s", channelSid, messageSid): { + httpx.MockConnectionError, + httpx.NewMockResponse(400, nil, `{"message": "Something went wrong", "detail": "Unknown", "code": 1234, "more_info": "https://www.twilio.com/docs/errors/1234"}`), + httpx.NewMockResponse(200, nil, `{ + "sid": "IM40d3a2b3404b4a10a1c914e8d780b3cc", + "account_sid": "AC81d44315e19273181bdaefac12cd3c12", + "service_sid": "IS83760ec293f6814bc6f5de5612f21fc2", + "to": "CHc73a3d9cf9f44afc8500ab01ce8ee0b9", + "channel_sid": "CHc73a3d9cf9f44afc8500ab01ce8ee0b9", + "date_created": "2016-03-24T20:37:57Z", + "date_updated": "2016-03-24T20:37:57Z", + "last_updated_by": null, + "was_edited": false, + "from": "system", + "attributes": "{}", + "body": "Hello", + "index": 0, + "type": "text", + "media": null, + "url": "https://chat.twilio.com/v2/Services/IS83760ec293f6814bc6f5de5612f21fc2/Channels/CHc73a3d9cf9f44afc8500ab01ce8ee0b9/Messages/IM40d3a2b3404b4a10a1c914e8d780b3cc" + }`), + }, + })) + + client := twilioflex.NewClient(http.DefaultClient, nil, authToken, accountSid, serviceSid, workspaceSid, flexFlowSid) + + _, _, err := client.FetchMessage(messageSid, channelSid) + assert.EqualError(t, err, "unable to connect to server") + + _, _, err = client.FetchMessage(messageSid, channelSid) + assert.EqualError(t, err, "Something went wrong") + + response, _, err := client.FetchMessage(messageSid, channelSid) + assert.NoError(t, err) + assert.Equal(t, "Hello", response.Body) +} diff --git a/services/tickets/twilioflex/testdata/event_callback.json b/services/tickets/twilioflex/testdata/event_callback.json index 112b2d25c..4fe8acdd8 100644 --- a/services/tickets/twilioflex/testdata/event_callback.json +++ b/services/tickets/twilioflex/testdata/event_callback.json @@ -92,6 +92,26 @@ "status": 200, "body": "IMAGE" } + ], + "https://chat.twilio.com/v2/Services/IS83760ec293f6814bc6f5de5612f21fc2/Channels/CH1880a9cde40c4dbb88dd97fc3aedac08/Messages/IM8c57eaf105f34905883b1192e9499641": [ + { + "sid": "IM40d3a2b3404b4a10a1c914e8d780b3cc", + "account_sid": "AC81d44315e19273181bdaefac12cd3c12", + "service_sid": "IS83760ec293f6814bc6f5de5612f21fc2", + "to": "CHc73a3d9cf9f44afc8500ab01ce8ee0b9", + "channel_sid": "CHc73a3d9cf9f44afc8500ab01ce8ee0b9", + "date_created": "2016-03-24T20:37:57Z", + "date_updated": "2016-03-24T20:37:57Z", + "last_updated_by": null, + "was_edited": false, + "from": "system", + "attributes": "{}", + "body": "Hello", + "index": 0, + "type": "text", + "media": null, + "url": "https://chat.twilio.com/v2/Services/IS83760ec293f6814bc6f5de5612f21fc2/Channels/CH1880a9cde40c4dbb88dd97fc3aedac08/Messages/IM8c57eaf105f34905883b1192e9499641" + } ] }, "status": 200, From 865649e8b4802eb93c72534afc65a418c419e8ef Mon Sep 17 00:00:00 2001 From: Teeh Amaral Date: Tue, 9 Jan 2024 13:48:53 -0300 Subject: [PATCH 3/3] fix tests --- .../twilioflex/testdata/event_callback.json | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/services/tickets/twilioflex/testdata/event_callback.json b/services/tickets/twilioflex/testdata/event_callback.json index 4fe8acdd8..d7d75ce39 100644 --- a/services/tickets/twilioflex/testdata/event_callback.json +++ b/services/tickets/twilioflex/testdata/event_callback.json @@ -95,22 +95,25 @@ ], "https://chat.twilio.com/v2/Services/IS83760ec293f6814bc6f5de5612f21fc2/Channels/CH1880a9cde40c4dbb88dd97fc3aedac08/Messages/IM8c57eaf105f34905883b1192e9499641": [ { - "sid": "IM40d3a2b3404b4a10a1c914e8d780b3cc", - "account_sid": "AC81d44315e19273181bdaefac12cd3c12", - "service_sid": "IS83760ec293f6814bc6f5de5612f21fc2", - "to": "CHc73a3d9cf9f44afc8500ab01ce8ee0b9", - "channel_sid": "CHc73a3d9cf9f44afc8500ab01ce8ee0b9", - "date_created": "2016-03-24T20:37:57Z", - "date_updated": "2016-03-24T20:37:57Z", - "last_updated_by": null, - "was_edited": false, - "from": "system", - "attributes": "{}", - "body": "Hello", - "index": 0, - "type": "text", - "media": null, - "url": "https://chat.twilio.com/v2/Services/IS83760ec293f6814bc6f5de5612f21fc2/Channels/CH1880a9cde40c4dbb88dd97fc3aedac08/Messages/IM8c57eaf105f34905883b1192e9499641" + "status": 200, + "body": { + "sid": "IM40d3a2b3404b4a10a1c914e8d780b3cc", + "account_sid": "AC81d44315e19273181bdaefac12cd3c12", + "service_sid": "IS83760ec293f6814bc6f5de5612f21fc2", + "to": "CHc73a3d9cf9f44afc8500ab01ce8ee0b9", + "channel_sid": "CHc73a3d9cf9f44afc8500ab01ce8ee0b9", + "date_created": "2016-03-24T20:37:57Z", + "date_updated": "2016-03-24T20:37:57Z", + "last_updated_by": null, + "was_edited": false, + "from": "system", + "attributes": "{}", + "body": "Hello", + "index": 0, + "type": "text", + "media": null, + "url": "https://chat.twilio.com/v2/Services/IS83760ec293f6814bc6f5de5612f21fc2/Channels/CH1880a9cde40c4dbb88dd97fc3aedac08/Messages/IM8c57eaf105f34905883b1192e9499641" + } } ] },