From fc56c7f61c45130eab9da800e0f8b64b7bf1719b Mon Sep 17 00:00:00 2001 From: "Dae.mn" Date: Wed, 4 Aug 2021 12:42:08 +0300 Subject: [PATCH 1/2] Allow SMS testing with numbers that are not PhoneTypeCode 0 Not every number that can receive an SMS has PhoneTypeCode 0 - for example, Toll-free numbers that can be obtained through Pinpoint and used for 2-way messaging. --- src/users/src/users-service/handlers.go | 73 ++++++++++++------------- 1 file changed, 35 insertions(+), 38 deletions(-) diff --git a/src/users/src/users-service/handlers.go b/src/users/src/users-service/handlers.go index 4fa2e2944..16d82706a 100644 --- a/src/users/src/users-service/handlers.go +++ b/src/users/src/users-service/handlers.go @@ -370,45 +370,42 @@ func UserVerifyAndUpdatePhone(w http.ResponseWriter, r *http.Request){ fmt.Println(res) mobilePhoneCode := int(*res.NumberValidateResponse.PhoneTypeCode) if (mobilePhoneCode != 0) { - var errMessage string = "The phone number provided is not a MOBILE phone number. The number is not capable of receiving SMS. Cannot create SMS endpoint for this number. Try entering a mobile phone number." - panic(errMessage) - http.Error(w, errMessage, 422) - return - } else { - var userAge string = strconv.Itoa(user.Age) - var userAttributes = make(map[string][]*string) - userAttributes["Username"] = []*string{&user.Username} - userAttributes["FirstName"] = []*string{&user.FirstName} - userAttributes["LastName"] = []*string{&user.LastName} - userAttributes["Gender"] = []*string{&user.Gender} - userAttributes["Age"] = []*string{&userAge} - - endpointRequest := &pinpoint.EndpointRequest{ - Address: &userDetails.PhoneNumber, - ChannelType: aws.String("SMS"), - OptOut: aws.String("ALL"), - Location: &pinpoint.EndpointLocation { - PostalCode: res.NumberValidateResponse.ZipCode, - City: res.NumberValidateResponse.City, - Country: res.NumberValidateResponse.CountryCodeIso2, - }, - Demographic: &pinpoint.EndpointDemographic { - Timezone: res.NumberValidateResponse.Timezone, - }, - User: &pinpoint.EndpointUser{ - UserAttributes: userAttributes, - UserId: &userDetails.UserID, - }, - } - var endpointId string = userDetails.PhoneNumber[1:] - updateEndpointInput := &pinpoint.UpdateEndpointInput{ - ApplicationId: &pinpoint_app_id, - EndpointId: &endpointId, - EndpointRequest: endpointRequest, - } - CreateEndpointAndSendConfirmation(w, r, updateEndpointInput, userDetails.PhoneNumber) - } + var warnMessage string = "The phone number provided is not a MOBILE phone number (PhoneTypeCode=0). The number may not be capable of receiving SMS." + fmt.Println(warnMessage) } + var userAge string = strconv.Itoa(user.Age) + var userAttributes = make(map[string][]*string) + userAttributes["Username"] = []*string{&user.Username} + userAttributes["FirstName"] = []*string{&user.FirstName} + userAttributes["LastName"] = []*string{&user.LastName} + userAttributes["Gender"] = []*string{&user.Gender} + userAttributes["Age"] = []*string{&userAge} + + endpointRequest := &pinpoint.EndpointRequest{ + Address: &userDetails.PhoneNumber, + ChannelType: aws.String("SMS"), + OptOut: aws.String("ALL"), + Location: &pinpoint.EndpointLocation { + PostalCode: res.NumberValidateResponse.ZipCode, + City: res.NumberValidateResponse.City, + Country: res.NumberValidateResponse.CountryCodeIso2, + }, + Demographic: &pinpoint.EndpointDemographic { + Timezone: res.NumberValidateResponse.Timezone, + }, + User: &pinpoint.EndpointUser{ + UserAttributes: userAttributes, + UserId: &userDetails.UserID, + }, + } + var endpointId string = userDetails.PhoneNumber[1:] + updateEndpointInput := &pinpoint.UpdateEndpointInput{ + ApplicationId: &pinpoint_app_id, + EndpointId: &endpointId, + EndpointRequest: endpointRequest, + } + CreateEndpointAndSendConfirmation(w, r, updateEndpointInput, userDetails.PhoneNumber) + } } t := RepoUpdateUser(user) From 9e07c4815ffb4c486462fde733fa1648c05edcbf Mon Sep 17 00:00:00 2001 From: "Dae.mn" Date: Thu, 5 Aug 2021 16:04:48 +0300 Subject: [PATCH 2/2] Reinstate erroring for some not OK phone codes --- src/users/src/users-service/handlers.go | 77 +++++++++++++------------ 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/src/users/src/users-service/handlers.go b/src/users/src/users-service/handlers.go index 16d82706a..a45b09849 100644 --- a/src/users/src/users-service/handlers.go +++ b/src/users/src/users-service/handlers.go @@ -368,44 +368,47 @@ func UserVerifyAndUpdatePhone(w http.ResponseWriter, r *http.Request){ return } else { fmt.Println(res) - mobilePhoneCode := int(*res.NumberValidateResponse.PhoneTypeCode) - if (mobilePhoneCode != 0) { - var warnMessage string = "The phone number provided is not a MOBILE phone number (PhoneTypeCode=0). The number may not be capable of receiving SMS." - fmt.Println(warnMessage) + mobilePhoneType := aws.StringValue(res.NumberValidateResponse.PhoneType) + if (mobilePhoneType == "INVALID" || mobilePhoneType == "LANDLINE") { + var errMessage string = "The phone number provided is phone number of type " + mobilePhoneType + ". The number would not not be capable of receiving SMS. Cannot create SMS endpoint for this number. Try entering a valid phone number." + panic(errMessage) + http.Error(w, errMessage, 422) + return + } else { + var userAge string = strconv.Itoa(user.Age) + var userAttributes = make(map[string][]*string) + userAttributes["Username"] = []*string{&user.Username} + userAttributes["FirstName"] = []*string{&user.FirstName} + userAttributes["LastName"] = []*string{&user.LastName} + userAttributes["Gender"] = []*string{&user.Gender} + userAttributes["Age"] = []*string{&userAge} + + endpointRequest := &pinpoint.EndpointRequest{ + Address: &userDetails.PhoneNumber, + ChannelType: aws.String("SMS"), + OptOut: aws.String("ALL"), + Location: &pinpoint.EndpointLocation { + PostalCode: res.NumberValidateResponse.ZipCode, + City: res.NumberValidateResponse.City, + Country: res.NumberValidateResponse.CountryCodeIso2, + }, + Demographic: &pinpoint.EndpointDemographic { + Timezone: res.NumberValidateResponse.Timezone, + }, + User: &pinpoint.EndpointUser{ + UserAttributes: userAttributes, + UserId: &userDetails.UserID, + }, + } + var endpointId string = userDetails.PhoneNumber[1:] + updateEndpointInput := &pinpoint.UpdateEndpointInput{ + ApplicationId: &pinpoint_app_id, + EndpointId: &endpointId, + EndpointRequest: endpointRequest, + } + CreateEndpointAndSendConfirmation(w, r, updateEndpointInput, userDetails.PhoneNumber) + } } - var userAge string = strconv.Itoa(user.Age) - var userAttributes = make(map[string][]*string) - userAttributes["Username"] = []*string{&user.Username} - userAttributes["FirstName"] = []*string{&user.FirstName} - userAttributes["LastName"] = []*string{&user.LastName} - userAttributes["Gender"] = []*string{&user.Gender} - userAttributes["Age"] = []*string{&userAge} - - endpointRequest := &pinpoint.EndpointRequest{ - Address: &userDetails.PhoneNumber, - ChannelType: aws.String("SMS"), - OptOut: aws.String("ALL"), - Location: &pinpoint.EndpointLocation { - PostalCode: res.NumberValidateResponse.ZipCode, - City: res.NumberValidateResponse.City, - Country: res.NumberValidateResponse.CountryCodeIso2, - }, - Demographic: &pinpoint.EndpointDemographic { - Timezone: res.NumberValidateResponse.Timezone, - }, - User: &pinpoint.EndpointUser{ - UserAttributes: userAttributes, - UserId: &userDetails.UserID, - }, - } - var endpointId string = userDetails.PhoneNumber[1:] - updateEndpointInput := &pinpoint.UpdateEndpointInput{ - ApplicationId: &pinpoint_app_id, - EndpointId: &endpointId, - EndpointRequest: endpointRequest, - } - CreateEndpointAndSendConfirmation(w, r, updateEndpointInput, userDetails.PhoneNumber) - } } t := RepoUpdateUser(user)