Code Monkey home page Code Monkey logo

amazon-connect-salesforce-cti's People

Contributors

amazon-auto avatar blee-amzn avatar dependabot[bot] avatar kbk-amzn avatar martin-greenberg avatar mayank92 avatar ramaniad avatar sderacy avatar shanshanxu2021 avatar srivanc avatar tsunanda1710 avatar volkanunsal avatar yiming-amzn avatar yingdoli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

amazon-connect-salesforce-cti's Issues

CCP opens and remains in browser popup and not in Salesforce CTI utility tab for softphone

Have a SAML integration between Salesforce and AC that followed this guide, and the AC CCP softphone only opens in a separate browser popup (for both the SAML authentication and after for usage) instead of returning to the utility tab designated for the CCP. Any CTI or Salesforce settings that cause this? How can the CCP exist within the utility tab? Many thanks for your input.

[Line: 71, Col: 1] LWC1058: Invalid HTML syntax: end-tag-without-matching-open-element.

Error installing Salesforce Package in Sandbox... upgrading from 5.14 in Spring '22 Salesforce Sandbox

Error Number: 1485695826-508640 (1210760379)

[Line: 71, Col: 1] LWC1058: Invalid HTML syntax: end-tag-without-matching-open-element.c_ContactChannelListView: [Line: 71, Col: 1] LWC1058: Invalid HTML syntax: end-tag-without-matching-open-element

[Line: 72, Col: 1] LWC1058: Invalid HTML syntax: end-tag-without-matching-open-element. markup://amazonconnect:ac_PhoneCallListView:

Multiple unknow triggers.

Hello,

I see two triggers which triggers everyday not sure what they do but they came with CTI package. can anyone explain what does triggers do?

AC_ContactCCATriggerBatch
AC_CaseCCATriggerBatch

Live chat in AC Contact Channel Analytics

Hi,

I couldn't see contact record with live chat in AC Contact Channel Analytics where voice call records are there. But the live chat connection can be found in AC Contact Channel. Is there any problem here or does current CTI in salesforce support to demonstrate live chat record in AC Contact Channel Analytics just like voice call? Thanks

Recordings suddenly stopped playing in salesforce (final player)

Interim working player and final player that does not work screenshot attache
Screen+Shot+2021-11-05+at+12 25 27+PM
d
Screen+Shot+2021-11-05+at+12 22 04+PM

So AWS uses 2 different players in SF, and one works and the other does not. Seems no issue with recording itself.
The change happened when upgrading from 5.14 to 5.16 AWS managed package on SF side

Salesforce Classic CTI Adapter - Click to Dial

We set up a CTI Adapter with Salesforce Classic. We created a CTI Flow for click-to-dial.

Our agents click on the phone number to initiate a call.

It takes multiple clicks for the call to initiate, or we have to wait for several seconds (about 15 seconds) to click on the phone number to make a call. Is the click-to-dial wait for all scripts to load before dialing? Is there a way to improve this? It is frustrating for the agents to click on the number multiple times?

Unable to play Contact Lens recordings in Salesforce using guided setup on v5.18

Trying to use the new guided setup to get Contact Lens recordings playable in Salesforce using v5.18 but not having any luck. Here's where I'm at so far (preface, I'm doing everything via the AWS web UI). Also of note, the recording plays fine using the regular player prior to it becoming a Contact Lens recording and I'm doing this in a Salesforce sandbox.

When using the guided set up I get the following error:

Error(s):
setupAudioRecording - An error occurred (ResourceConflictException) when calling the PublishVersion operation: The operation cannot be performed at this time. The resource arn:aws:lambda:us-east-1:012504245588:function:serverlessrepo-AmazonConnectSalesforceLambda-sfSig4RequestToS3 is currently in the following state: 'Pending'. StateReasonCode: 'Creating'
See developer console(s) for more details.

This is what appears in the dev console:
Chrome Dev Console on Guided Setup Error

On review in AWS, it looks like it is creating the CloudFront distribution public key and key group but not updating the distribution behavior, so I have been manually assigning the key group to the distribution behavior.

It also appears to be creating the [serverlessrepo-AmazonConnectSalesforceLambda-sfSig4RequestToS3] lambda function with the correct execution role but not deploying it to Lambda@Edge, so I have been manually deploying that function to Lambda@Edge per the installations docs.

After that I have been updating the SalesforceCredentials secret with the private key and the CloudFront public key ID.

With that all in place on my first attempt to open a CCA record with a Contact Lens recording I see the following error:
Chrome Dev Console Error Loading Audio on CCA Record

Subsequent attempts show a different error:
Chrome Dev Console Error Loading Audio on CCA Record 2nd Try

Since it mentions CORS, here's the CORS config on the S3 bucket (I can verify that the sandbox name hidden under the blue is the same with no typos):
S3 CORS Config

Looking at the request/response in Fiddler looks like this:

503 ERROR

The request could not be satisfied.


The Lambda function associated with the CloudFront distribution is invalid or doesn't have the required permissions. We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.
If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.


Generated by cloudfront (CloudFront)
Request ID: UHDCsv6lH5EzlxcyvxAPAC4TQOtybjUoY5bBRKWSusd8GNIBN44eVg==

...and finally here is an error that's being logged in CloudWatch from the [serverlessrepo-AmazonConnectSalesforceLambda-sfSig4RequestToS3] lambda function:

2022-02-23T19:16:48.792Z 622df378-ba5e-4302-b827-0e12eb47024c ERROR Invoke Error {
"errorType": "TypeError",
"errorMessage": "Cannot read property 'path' of undefined",
"stack": [
"TypeError: Cannot read property 'path' of undefined",
" at Runtime.exports.handler (/var/task/sfSig4RequestToS3.js:24:37)",
" at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
]
}

Any idea on what part of the config/setup I might be missing or have wrong?

AC Contact Trace record missing the ContactChannel field

We have Amazon Connect Salesforce working in our Org.

We are receiving AC Contact Trace records, but the records are missing the "ContactChannel" field.

How is this field being populated? I do not see any reference to it anywhere.

We wanted to get the phone number in amazonconnect__AC_ContactChannels__c.amazonconnect__CustomerNumber__c

Voicemail Drop not working - "Voice Contact is not found"

Followed the documentation exactly but can't get voicemail drop to work. Running SF 5.14 in lightning. https://amazon-connect.github.io/amazon-connect-salesforce-cti/docs/lightning/cti-adapter/10-voicemail-drops/ . Only change I made was on the section for CTI flow. the image says "me" instead of a quick connect name. Assuming thats an error.

Outbound calls work. Callbacks do not.

Screen Shot 2021-09-29 at 3 11 15 PM

Screen Shot 2021-09-29 at 3 12 55 PM

Screen Shot 2021-09-29 at 3 13 27 PM

Screen Shot 2021-09-29 at 3 13 41 PM

Screen Shot 2021-09-29 at 3 14 36 PM

Screen Shot 2021-09-29 at 3 15 01 PM

Screen Shot 2021-09-29 at 3 16 06 PM

Screen Shot 2021-09-29 at 3 24 04 PM

Screen Shot 2021-09-29 at 3 24 18 PM

Screen Shot 2021-09-29 at 3 29 06 PM

What is the error referencing? Outbound calls work with the execute button. But anytime there is a callback, it does not work. It shows the "success" bubble and then prints the error in the chrome console. This was working in our sandbox about a week ago and stopped. Used same configurations and everything.

Another issue of Error “refused to run the JavaScript URL because it violates the following Content Security Policy directive...”

After CTI adapter installation, I have configured propery about URLs. However the link of "Phone number" doesn't work with an error in below.

Refused to run the JavaScript URL because it violates the following Content Security Policy directive: "script-src 'self' 'nonce-************************' chrome-extension: 'unsafe-inline' 'unsafe-eval' *.canary.lwc.dev *.vf.force.com blob: https://ssl.gstatic.com/accessibility/ https://static.lightning.force.com". Note that 'unsafe-inline' is ignored if either a hash or nonce value is present in the source list.

Same issue was reported in here, but there is no answer.

Can I fix this by myself? or needs to fix in CTI Adapter?

Click to Dial stopped working after first use until the agent refreshed the page

Hi Team,

We have recently upgraded the CTI Adapter to v.514 in which few of the existing functionalities were breaking

  • The Click to Dial functionality works fine only for first time ,it stopped working when dialed for second time.
  • In CTI Flows Screen Popup Block stopped working once after an outbound call is made either by using click to dial or number pad.
  • The Presence Sync Rules stopped working between Omni-Channel and CCP once after an outbound call is made either by using click to dial or number pad.

The above scenario work perfectly without any issue once a manual refresh is done but stops working for the second time. It seems this same behavior was observed earlier when CTI Adapter was upgraded to v5.9 and it has been fixed in v5.10

Kindly suggest us a way in which we can overcome this or should we wait for v5.15 for a fix.

Amazon Q embedded mode caused CCP to close

I have just installed the latest adapter, and it's all generally working fine. I have configured the wisdom/Q adapter, as per https://amazon-connect.github.io/amazon-connect-salesforce-cti/docs/lightning/cti-adapter/12-amazonq-integration.

When I set via the last method - i.e. embedded into a case form, whenever I close the case, the CCP logs out/unmounts.
image

image

Note - Amazon Connect Streams tends to do this too - however I thought given this was a supported method for the Salesforce Adapter, this would highlight some workaround to the issue.

handling multiple instances in salesforce

Is it possible to handle more than one Amazon Connect instances in one salesforce org?
My customer have very large sized call-center and thinking to divide the Amazon Connect instance by region.

Contact Channel Analytics Recording Player stopped working after upgrading to 5.14

To avail the new features of v5.14 in our Prod SF Org first we have upgraded it in one of our sandbox and did testing to check whether all our existing functionalities were working properly ,in that the CCA Recording Import feature alone stopped working.

We have check all the configuration steps thoroughly as best as we can and all the setup was properly made , we have also tried with the fix which was in one of the similar ticket to remove trailing slash (/) after "invocations" in the Named Credential URL but still the issue persist.

Please find the below details which we have gathered while debugging this issue and kindly let us know a fix for this asap.

  • By Inspecting in the console we get AC_RecordingViewer:1 Uncaught (in promise) DOMException: Unable to decode audio data
  • Even though the URLs are properly allowlisted we get Content Security Policy of your site blocks the use of 'eval' in JavaScript
  • In Salesforce debug log we get CALLOUT_RESPONSE|[263]|System.HttpResponse[Status=Forbidden, StatusCode=403]

Case ID to CCA on outbound Click to Dial CTI Flow

I work for CashApp as a Voice BSA support Amazon Connect which is integrated into Salesforce. I was referred here per AWS Case ID: Case ID 10513893341.

We are looking to build an outbound CTI flow using Click to Dial as the initiating event. The goal is to grab the Salesforce Case ID from the data payload and post to the Amazon CCA record. As is -- the CCA record is created, but the related Case ID is not attached.

We have tested and see that both the Salesforce Case ID and Amazon Contact ID are included in the payload. Need help to solution the CTI Flow to utilize that data to populate the Case ID into the CCA record.
Contact Center Instance ARN: arn:aws:connect:us-east-1:040549526589:instance/291e2af8-fdd2-457d-b63a-5d6984ac8157

Attached is the payload from console log from a test call utilizing click to dial. I've pasted a snippet below.
Note - it contains the contact iD as well as the recordid and recordname. The RecordID / RecordName are the Saleforce Case identifiers.

contactId 99a3267e-ce68-41a5-9f29-b8af68b26d82
"recordId":"5006t000003t5ubAAA","recordName":"56730191"

Appreciate your help!
Judd Alexander
CashApp Voice BSA

LogUtils.ts:41 [CTI ADAPTER]: [FLOW]: Executing Flow: {"name":"Salesforce UI onClickToDial","actions":[{"id":"0","type":"SE_Start","controls":{},"ports":{"done":"1"},"position":[-288,16]},{"id":"1","type":"SE_AgentDialNumber","controls":{"phoneNumber":"$.payload.number"},"ports":{"success":"2","failure":"2"},"position":[10,10]},{"id":"2","type":"SE_End","controls":null,"position":[384,16]}]}
LogUtils.ts:41 [CTI ADAPTER]: [FLOW] [Salesforce UI onClickToDial]: payload: {"number":"+15035777532","recordId":"5006t000003t5ubAAA","recordName":"56730191","objectType":"Case"}
LogUtils.ts:41 [CTI ADAPTER]: [FLOW] [Salesforce UI onClickToDial]: nextAction: {"id":"0","type":"SE_Start","controls":{},"ports":{"done":"1"},"position":[-288,16]}
LogUtils.ts:41 [CTI ADAPTER]: [FLOW] [Salesforce UI onClickToDial]: actions: {"0":{"success":true,"results":null,"exception":null}}
LogUtils.ts:41 [CTI ADAPTER]: [FLOW] [Salesforce UI onClickToDial]: nextAction: {"id":"1","type":"SE_AgentDialNumber","controls":{"phoneNumber":"+15035777532"},"ports":{"success":"2","failure":"2"},"position":[10,10]}
connect-streams-min.38499a86.js:1 [2022-08-05T03:04:34.919Z] [INFO] [589a8ced-7656-4a91-b994-5dc9e04783ba]: media controller of type softphone init
connect-streams-min.38499a86.js:1 [2022-08-05T03:04:34.920Z] [INFO] [589a8ced-7656-4a91-b994-5dc9e04783ba]: SoftphoneContact init
connect-streams-min.38499a86.js:1 [2022-08-05T03:04:34.946Z] [INFO] [589a8ced-7656-4a91-b994-5dc9e04783ba]: Contact detected: contactId 99a3267e-ce68-41a5-9f29-b8af68b26d82 agent connectionId a9fe3189-a727-4311-aac3-4d3e755acb53
connect-streams-min.38499a86.js:1 [2022-08-05T03:04:34.962Z] [INFO] [589a8ced-7656-4a91-b994-5dc9e04783ba]: Softphone call detected: contactId 99a3267e-ce68-41a5-9f29-b8af68b26d82 agent connectionId a9fe3189-a727-4311-aac3-4d3e755acb53
LogUtils.ts:41 [CTI ADAPTER]: [FLOW] [Salesforce UI onClickToDial]: actions: {"0":{"success":true,"results":null,"exception":null}}
LogUtils.ts:41 [CTI ADAPTER]: [FLOW] [Salesforce UI onClickToDial]: nextAction: {"id":"1","type":"SE_AgentDialNumber","controls":{"phoneNumber":"+15035777532"},"ports":{"success":"2","failure":"2"},"position":[10,10]}

TEST_cf1--cashbox.sandbox.lightning.force.com-1659669303047.log.txt

Post Error sfRealTimeQueueMetrics

Hi,

I have installed the package from SAR. It installed successfully. However I'm getting post errors within the sfRealTimeQueueMetrics Lambda. From Cloudwatch I see the following:

[INFO] 2021-04-26T11:22:27.615Z c2c92738-017d-45ef-b985-293447f770d2 Response: [{
"message": "Session expired or invalid",
"errorCode": "INVALID_SESSION_ID"
}]
[INFO] 2021-04-26T11:22:27.615Z c2c92738-017d-45ef-b985-293447f770d2 Retrieving new Salesforce OAuth token
[INFO] 2021-04-26T11:22:27.615Z c2c92738-017d-45ef-b985-293447f770d2 POST Requests:
[ERROR] 2021-04-26T11:22:27.987Z c2c92738-017d-45ef-b985-293447f770d2 invalid_request: must use HTTP POST
[ERROR] Exception: invalid_request: must use HTTP POST
Traceback (most recent call last):
  File "/var/task/sfRealTimeQueueMetrics.py", line 89, in lambda_handler
    raise e
  File "/var/task/sfRealTimeQueueMetrics.py", line 86, in lambda_handler
    ac_queue_metrics(queue_id_name_dict,queue_ids,instance_id)
  File "/var/task/sfRealTimeQueueMetrics.py", line 218, in ac_queue_metrics
    raise e
  File "/var/task/sfRealTimeQueueMetrics.py", line 212, in ac_queue_metrics
    sf.update_by_external(objectnamespace + "AC_QueueMetrics__c", objectnamespace + 'Queue_Id__c',queue_metics_data_dict['queue_id'],sObjectData)
  File "/var/task/salesforce.py", line 114, in update_by_external
    self.makeRequest(self.request.patch, **{"url": url, "data": data})
  File "/var/task/salesforce.py", line 188, in makeRequest
    resp = self.request.post(url=self.login_host+"/services/oauth2/token", params=self.auth_data, headers=headers, hideData=True)
  File "/var/task/salesforce.py", line 206, in post
    return check_resp(r)
  File "/var/task/salesforce.py", line 237, in check_resp
    raise Exception(msg)

SOQL Exception from Trigger in AC CTI package

Hi, I'm not sure if this is the right place to raise this, so let me know otherwise.

Our TAM from Salesforce spotted this exception in our Org and it was occurring very frequently.
It is coming from a trigger that appears to be managed by the Amazon Connect CTI adapter package.

  1. Error Exception in SOQL : "System.QueryException: Non-selective query against large object type"
  2. Count of occurrences till present : ~ 60636 Total. Trending at ~ 9000 per day.
  3. Entrypoint of Error : Managed Package Component - "amazonconnect.AC_VoiceIdChannelTrigger"
  4. Failing Query: "SELECT Id, Phone, MobilePhone FROM Contact WHERE Phone = :phoneNumsContactSet OR MobilePhone = :phoneNumsContactSet"

The above query was trying to retrieve more than 1000000 rows as an inefficient transaction.

Please refer to this article for more info - https://help.salesforce.com/s/articleView?id=000323572&type=1

EDIT: running 5.18

Call Recording Streaming not working for CCA of Contact Lens Type

Hi Team,
Call Recording Streaming not working for Contact Channel Analytics Record of Contact Lens Type when sfGenerateAudioRecording with sfExecuteAWSService as per the advice of the latest release guide , when analyzed with external tool got some error response as below:
{"errorMessage": "'method'", "errorType": "KeyError", "stackTrace": [" File "/var/task/sfExecuteAWSService.py", line 40, in lambda_handler\n method = event["method"]\n"]}

Please let me know the fix for this.

Contact Trace Record failed to create after upgrading CTI Adapter to v5.16

Hi Team,

Please find the errors I got in Cloud watch Contact Trace Record Lambda Function log:

[ERROR] Exception: INVALID_FIELD: No such column 'amazonconnect__DisconnectReason__c' on sobject of type amazonconnect__AC_ContactTraceRecord__c
Traceback (most recent call last):
  File "/var/task/sfContactTraceRecord.py", line 45, in lambda_handler
    raise e
  File "/var/task/sfContactTraceRecord.py", line 40, in lambda_handler
    process_ctr_record(event['record'])
  File "/var/task/sfContactTraceRecord.py", line 55, in process_ctr_record
    create_ctr_record(record_obj)
  File "/var/task/sfContactTraceRecord.py", line 141, in create_ctr_record
    sf.update_by_external(objectnamespace + "AC_ContactTraceRecord__c", objectnamespace + 'ContactId__c', ctr['ContactId'], sf_request)
  File "/var/task/salesforce.py", line 114, in update_by_external
    self.makeRequest(self.request.patch, **{"url": url, "data": data})
  File "/var/task/salesforce.py", line 183, in makeRequest
    return requestMethod(**kwargs, headers=self.headers)
  File "/var/task/salesforce.py", line 227, in patch
    return check_resp(r)
  File "/var/task/salesforce.py", line 253, in check_resp
    raise Exception(msg)

I tried to fix this by commenting the line number 106 (sf_request[objectnamespace + 'DisconnectReason__c'] = ctr['DisconnectReason']) in order to remove the field from lambda function but again I end up with a different error which I'm unable to fix it please help

[ERROR] Runtime.ImportModuleError: Unable to import module 'sfContactTraceRecord': No module named 'salesforce'
Traceback (most recent call last):

Thanks,
Irfaan

Getting Insufficient Privileges' error when login to CTI adapter

After upgrading aws connect package to 5.11, when we login to CTI adapter within salesforce we get 'insufficient Privileges' error and login is failed. user cannot take calls within salesforce.

Workaround tried: We gave access to 'amazonconnect.AC_MedialessPopout' visualforce page and it worked.

Even after adding all the permission sets(AC_Agent, AC_Manager, AC_Administrator) to the specific user, we are unable to login to adapter. All the three permission sets doesn't have access to this particular visualforce page.

Can you check on the issue and release a fix asap.

Bug: CTI Flow does not execute agent.onRefresh in CTI Adapter for Salesforce v5.19

CTI Flow for agent.onRefresh event is not executed in Amazon Connect Salesforce CTI Adapter v5.19.
Agent.onRefresh events do not seem to be binding.
Is there any way to deal with this?

CTI Flow Information

  • CTI Script Name: Any Value (e.g.: Amazon Connect Agent onRefresh)
  • Source: Amazon Connect Agent
  • Event: onRefresh

Example CTI Flow

{
    "actions": [
        {
            "id": "uid-0",
            "type": "SE_Start",
            "meta": {},
            "controls": {},
            "ports": {
                "done": "uid-1"
            },
            "position": [
                -320,
                -256
            ]
        },
        {
            "id": "uid-1",
            "type": "SE_Log",
            "meta": {},
            "controls": {
                "level": "info",
                "message": "onRefresh!!!"
            },
            "ports": {
                "done": "uid-3"
            },
            "position": [
                -112,
                -256
            ]
        },
        {
            "id": "uid-3",
            "type": "SE_End",
            "meta": {},
            "controls": {},
            "ports": {},
            "position": [
                240,
                -256
            ]
        }
    ]
}

image

Error on Case update

The version 5.10 is causing this error mainly when a Partner User is trying to perform an operation that updates a Case.

Looks like the security check is enforcing object/field level security for the AC Trigger and causing the failure of the entire request. Even when the update flow has no relation to the plugin at all.

CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY: amazonconnect.AC_AssociateCCACaseTrigger: execution of AfterUpdate caused by: amazonconnect.AC_SecurityUtils.CrudException: Privilegios insuficientes No tiene el nivel de acceso necesario para realizar la operación que ha solicitado. Póngase en contacto con el propietario del registro o con su administrador si es necesario obtener acceso. Class.amazonconnect.AC_SecurityUtils.checkObjectIsReadable: line 224, column 1 Class.amazonconnect.AC_SecurityUtils: line 205, column 1 Trigger.amazonconnect.AC_AssociateCCACaseTrigger: line 6, column 1

Add and Subtract CTI Blocks

It seems there are Multiply and Divide CTI Blocks but not Add or Subtract. Has this been overlooked or is there another way to add and subtract values?

Error on Case Creation

If a user does not have AC Administrator permission set, they get an error when trying to create a new case:

amazonconnect.AC_AssociateCCACaseTrigger: execution of AfterInsert caused by: amazonconnect.AC_SecurityUtils.FlsException: Class.amazonconnect.AC_SecurityUtils: line 257, column 1 Class.amazonconnect.AC_SecurityUtils: line 214, column 1 Trigger.amazonconnect.AC_AssociateCCACaseTrigger: line 6, column

Contact Lens and Transcribe

I am trying to understand how the CTI adapter integrates with Contact Lens, which I am using.

If I look at the Lambda (sfProcessContactLens) configuration, there is an environment variable called TRANSCRIPTS_DESTINATION that uses the parameter TranscribeOutputS3BucketName. Looking at the description of the parameter it states:

This is the S3 bucket where Amazon Transcribe stores the output. If you don't specify an encryption key, the output of the transcription job is encrypted with the default Amazon S3 key (SSE-S3). Not required if both PostcallRecordingImportEnabled and PostcallTranscribeEnabled set to false.

In my case, I had set both PostcallRecordingImportEnabled and PostcallTranscribeEnabled to false and so left TranscribeOutputS3BucketName as an empty string since I am using Contact Lens.

However, the Lambda sfProcessContactLens code is still trying to refer to an S3 bucket for transcription. Is this a mistake? I'm not sure why Transcribe still needs to be used when Contact Lens has already transcripted the recording.

Invalid bucket name "": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$"
Traceback (most recent call last):
  File "/var/task/sfProcessContactLens.py", line 94, in lambda_handler
    raise e
  File "/var/task/sfProcessContactLens.py", line 69, in lambda_handler
    oMetadata = getS3FileMetadata(os.environ['TRANSCRIPTS_DESTINATION'], contactId)
  File "/var/task/sf_util.py", line 116, in getS3FileMetadata
    response = s3.head_object(Bucket=Bucket, Key='locks/' + ContactId + '.lock')
  File "/opt/python/lib/python3.7/site-packages/botocore/client.py", line 357, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/opt/python/lib/python3.7/site-packages/botocore/client.py", line 634, in _make_api_call
    api_params, operation_model, context=request_context)
  File "/opt/python/lib/python3.7/site-packages/botocore/client.py", line 680, in _convert_to_request_dict
    api_params, operation_model, context)
  File "/opt/python/lib/python3.7/site-packages/botocore/client.py", line 712, in _emit_api_params
    params=api_params, model=operation_model, context=context)
  File "/opt/python/lib/python3.7/site-packages/botocore/hooks.py", line 356, in emit
    return self._emitter.emit(aliased_event_name, **kwargs)
  File "/opt/python/lib/python3.7/site-packages/botocore/hooks.py", line 228, in emit
    return self._emit(event_name, kwargs)
  File "/opt/python/lib/python3.7/site-packages/botocore/hooks.py", line 211, in _emit
    response = handler(**kwargs)
  File "/opt/python/lib/python3.7/site-packages/botocore/handlers.py", line 223, in validate_bucket_name
    raise ParamValidationError(report=error_msg)

If I comment the lines 69, 72, 73 and 89 (lines which are trying the read the metadata from a Transcribe object in S3) from the sfProcessContactLens.py file, the code runs successfully and a Contact Lens entry is created in Salesforce.

Salesforce User Admin permissions

Hello,

i get asked that a lot and i just need an answer to hand out:
Why does the Salesforce CTI User need Admin permission?

Is there a list of permission it actually needs?

best regards

The Service Console page keeps refreshing

Hello. I am not able to work with the Service Console page because it keeps restarting (a refresh every 10 seconds). Do you have any idea how to fix it all?

The other pages are OK. Only the Service Console page has this refresh problem.

Also, all pages in my Salesforce environment quickly display an elephant with error 22, then the content of the requested page is displayed.
Everything is in my DEV Lightning environment.
Thanks

Service.Cloud.qui.tourne.en.rond.mov

IdP Login URL - Single Sign On settings

Hi, SSO is configured for my Amazon Connect instance via Azure Active Directory. What would be the IdP Login URL for Single Sign On settings in Salesforce?

So far, I've tried the following unsuccessfully.

https://myapps.microsoft.com/signin/{ApplicationName}/{ApplicationID}?tenantId={TenantID}

https://account.activedirectory.windowsazure.com/applications/signin/{ApplicationID}?tenantId={TenantID}

https://login.microsoftonline.com/{TenantID}/saml2

Would appreciate any help/suggestions. Thanks.

Softphone Opens in a Separate Window

Followed along with these instructions and we're running into an issue where the user is prompted to Sign in to CCP, a new window appears for login, they successfully log into Amazon Connect, but then the soft phone stays in the new window, rather than in the expected CCP Phone popup.

We're using Azure AD for our SSO:
screenshot

Audio recording import feature stopped working after upgrade to 5.13

We recently upgraded to of our development orgs from 5.12 to 5.13, and afterwards, the audio recording import feature stopped working on both platforms.

When the CCA record page loads we are seeing the following error in the browser console log:

RECORDING_URL:CHANGED {"message":"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details."} string

We’ve checked and double checked the named credentials settings on the Salesforce-side, we have also rebuilt the IAM user, and the results remain the same.

The salesforce.com API version on both platforms is 52.0.

Custom CCP in Salesforce

Is there any way to use a custom Contact Control Panel while keeping the CTI flows in SF?

I can't find any place to set my custom panel URL. I'm open to writing code to fix this, but the package seems locked.

historical-metrics issues

QUEUE Report

Spelling mistakes for:

b. API contact handled should be b. API contacts handled

Order need to be changes to:

a. Contacts answered in 25 seconds
b. API Contacts   
c. API contacts handled   
d. Callback Contacts   
e. Callback contacts handled   
f. Contacts transferred out external  
g. Contacts transferred out internal 

Agent Report:

Spelling mistake:

Agent on contact tome to Agent on contact time

Does not appear in the AWS report:

Contacts consulted

AC Contact Channel Analytics issue with CTI upgrade

Recently I installed the new version of the CTI Adapter, so upgraded from v5.7 to v5.9 and after doing that it broke the AC Contact Channel Analytics in Salesforce as now the UI looks like in the attached image. So the recording playback, waveform, and transcript views are all missing.

Secondly I am placing calls and have everything turned on for Recording transcripts, AI Driven Contact Analysis, and postcall contact lens import but a AC Contact Channel Analytics object is not getting created in Salesforce. It was all working fine before but after upgrading the CTI adapter and the AWS Connect Salesforce lambda function to v5.9 it stopped working. I found the below error logs for the function sfExecuteTranscriptionS, on why it is not creating the AC Contact Channel Analytics object in Salesforce. As I said it was working before but now broken when upgraded to v5.9. Below is the error:

CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY: amazonconnect.AC_AssociateCaseContactCCATrigger: execution of BeforeInsert\n\ncaused by: System.QueryException: Non-selective query against large object type (more than 200000 rows). Consider an indexed filter or contact salesforce.com about custom indexing.\nEven if a field is indexed a filter might still not be selective when:\n1. The filter value includes null (for instance binding with a list that contains null)\n2. Data skew exists whereby the number of matching rows is very large (for instance, filtering for a particular foreign key value that occurs many times)\n\n(amazonconnect)

sfSig4RequestToS3.js lambda fails after 5.9->5.10.1 upgrade

The sfSig4RequestToS3.js lambda works fine with SAM application 5.9. After upgrading to 5.10.1 (and Salesforce managed package 5.12.0) it fails with HTTP 503 and the lambda logs an error:

ERROR	Invoke Error 	{
    "errorType": "TypeError",
    "errorMessage": "Cannot read property 'path' of undefined",
    "stack": [
        "TypeError: Cannot read property 'path' of undefined",
        "    at Runtime.exports.handler (/var/task/index.js:24:37)",
        "    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
    ]
}

https://github.com/amazon-connect/amazon-connect-salesforce-cti/blob/main/lightning/04%20Configuring%20and%20Using%20AWS%20Serverless%20Application%20Repository%20for%20Salesforce%20Features/sfSig4RequestToS3.js#L24

In AWS support case 8171736781 we were told this lambda code is incorrect and the reference to request.origin.custom.path must be request.origin.s3.path (logging the incoming event.Records[0].cf.request confirms this - origin contains s3 not custom). Making this change fixed the lambda failure, however now the lambda fails with HTTP 403 because it is not correctly signing the request. The HTTP 403 body contains the error:

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>ASIAQ2LUSVT6BZGLPDN3</AWSAccessKeyId><StringToSign>AWS4-HMAC-SHA256
20210406T204341Z
20210406/us-west-2/s3/aws4_request
5694014fdda8728933d9cb5381579535344e29ca70da7e07e2a06a0543441a98</StringToSign><SignatureProvided>f80b7735a3b9c3df1eaa03e5d3fe51bc0f1fc976672a6bba1141f8a1aacafdcb</SignatureProvided><StringToSignBytes>41 57 53 34 2d 48 4d 41 43 2d 53 48 41 32 35 36 0a 32 30 32 31 30 34 30 36 54 32 30 34 33 34 31 5a 0a 32 30 32 31 30 34 30 36 2f 75 73 2d 77 65 73 74 2d 32 2f 73 33 2f 61 77 73 34 5f 72 65 71 75 65 73 74 0a 35 36 39 34 30 31 34 66 64 64 61 38 37 32 38 39 33 33 64 39 63 62 35 33 38 31 35 37 39 35 33 35 33 34 34 65 32 39 63 61 37 30 64 61 37 65 30 37 65 32 61 30 36 61 30 35 34 33 34 34 31 61 39 38</StringToSignBytes><CanonicalRequest>GET
/connect/cureatr-pharmacy-sandbox/CallRecordings/2021/04/01/c315eeab-94c3-4643-8f0e-9abf578d12e9_20210401T14%3A26_UTC.wav

host:amazon-connect-39fc5d510d08.s3.us-west-2.amazonaws.com
x-amz-cf-id:
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
x-amz-date:20210406T204341Z
x-amz-security-token:IQoJb3JpZ2luX2VjEN3//////////wEaCXVzLWVhc3QtMSJHMEUCIA9DWYDQT7H4vj5HZUDUyJc2k/fQgT5FZJ/CDedab57KAiEA6WPCxSHx34pSkBIH0Tyb5cQjsGJiSyPQQCqf+qL7QFkq3gEINhAAGgwwNTY2MTU5MzkzMjQiDI0OODnWfg1aiUz3xSq7AayC9CF/I+LzBnEQWqfEblyp8IXa5OHr67eFjx3/EAw5TOjWwWXD05qEM3dXrFOfZFBslrScN8ybwPFOMBwiwBI2xYFeiSyflOIOjwp6H0ZFV65pyj+L1vkFtMPPky14/k9ItsYEMc7JqnkP9Ek7EFSV7PPIp3o3AD/yRcaZ/z6S3EhFPdAZ3TTJLz98oLiQ+FSdvJSl/dX/YIn1h67hGUeW1uQtiP/dKhu/8B0wcZkYE4Pn350MplTFmVkw/Y+zgwY64AEPaTM6MerOPI8RbI40qZjtaNZiPJiBtL13PN8fZdhlCPBtw/cc9QPN9ga8XIRr6zezIQDVZbQ0HFNQc7Rz7+/ySIUZCruozqoRct2RYl1zheqaLDYJz6F73loCm0gk9F+QRkCEyQ+I5TgGfD7dabs9O0h21jkr6Wvzgg7HofQMU0HxDJpa4ThiD54wCBi5h9z4FhYsVXNqPjIpyBgEhEWiqbvb5TX0yvmb3jSQtLBKiU1gjASA7R3qRua/RnsdwYGGKO2JuXUGBhHYBqUJ31TB74PZKbsGZGJWEXlKv0vLaw==

host;x-amz-cf-id;x-amz-content-sha256;x-amz-date;x-amz-security-token
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855</CanonicalRequest><CanonicalRequestBytes>47 45 54 0a 2f 63 6f 6e 6e 65 63 74 2f 63 75 72 65 61 74 72 2d 70 68 61 72 6d 61 63 79 2d 73 61 6e 64 62 6f 78 2f 43 61 6c 6c 52 65 63 6f 72 64 69 6e 67 73 2f 32 30 32 31 2f 30 34 2f 30 31 2f 63 33 31 35 65 65 61 62 2d 39 34 63 33 2d 34 36 34 33 2d 38 66 30 65 2d 39 61 62 66 35 37 38 64 31 32 65 39 5f 32 30 32 31 30 34 30 31 54 31 34 25 33 41 32 36 5f 55 54 43 2e 77 61 76 0a 0a 68 6f 73 74 3a 61 6d 61 7a 6f 6e 2d 63 6f 6e 6e 65 63 74 2d 33 39 66 63 35 64 35 31 30 64 30 38 2e 73 33 2e 75 73 2d 77 65 73 74 2d 32 2e 61 6d 61 7a 6f 6e 61 77 73 2e 63 6f 6d 0a 78 2d 61 6d 7a 2d 63 66 2d 69 64 3a 0a 78 2d 61 6d 7a 2d 63 6f 6e 74 65 6e 74 2d 73 68 61 32 35 36 3a 65 33 62 30 63 34 34 32 39 38 66 63 31 63 31 34 39 61 66 62 66 34 63 38 39 39 36 66 62 39 32 34 32 37 61 65 34 31 65 34 36 34 39 62 39 33 34 63 61 34 39 35 39 39 31 62 37 38 35 32 62 38 35 35 0a 78 2d 61 6d 7a 2d 64 61 74 65 3a 32 30 32 31 30 34 30 36 54 32 30 34 33 34 31 5a 0a 78 2d 61 6d 7a 2d 73 65 63 75 72 69 74 79 2d 74 6f 6b 65 6e 3a 49 51 6f 4a 62 33 4a 70 5a 32 6c 75 58 32 56 6a 45 4e 33 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 77 45 61 43 58 56 7a 4c 57 56 68 63 33 51 74 4d 53 4a 48 4d 45 55 43 49 41 39 44 57 59 44 51 54 37 48 34 76 6a 35 48 5a 55 44 55 79 4a 63 32 6b 2f 66 51 67 54 35 46 5a 4a 2f 43 44 65 64 61 62 35 37 4b 41 69 45 41 36 57 50 43 78 53 48 78 33 34 70 53 6b 42 49 48 30 54 79 62 35 63 51 6a 73 47 4a 69 53 79 50 51 51 43 71 66 2b 71 4c 37 51 46 6b 71 33 67 45 49 4e 68 41 41 47 67 77 77 4e 54 59 32 4d 54 55 35 4d 7a 6b 7a 4d 6a 51 69 44 49 30 4f 4f 44 6e 57 66 67 31 61 69 55 7a 33 78 53 71 37 41 61 79 43 39 43 46 2f 49 2b 4c 7a 42 6e 45 51 57 71 66 45 62 6c 79 70 38 49 58 61 35 4f 48 72 36 37 65 46 6a 78 33 2f 45 41 77 35 54 4f 6a 57 77 57 58 44 30 35 71 45 4d 33 64 58 72 46 4f 66 5a 46 42 73 6c 72 53 63 4e 38 79 62 77 50 46 4f 4d 42 77 69 77 42 49 32 78 59 46 65 69 53 79 66 6c 4f 49 4f 6a 77 70 36 48 30 5a 46 56 36 35 70 79 6a 2b 4c 31 76 6b 46 74 4d 50 50 6b 79 31 34 2f 6b 39 49 74 73 59 45 4d 63 37 4a 71 6e 6b 50 39 45 6b 37 45 46 53 56 37 50 50 49 70 33 6f 33 41 44 2f 79 52 63 61 5a 2f 7a 36 53 33 45 68 46 50 64 41 5a 33 54 54 4a 4c 7a 39 38 6f 4c 69 51 2b 46 53 64 76 4a 53 6c 2f 64 58 2f 59 49 6e 31 68 36 37 68 47 55 65 57 31 75 51 74 69 50 2f 64 4b 68 75 2f 38 42 30 77 63 5a 6b 59 45 34 50 6e 33 35 30 4d 70 6c 54 46 6d 56 6b 77 2f 59 2b 7a 67 77 59 36 34 41 45 50 61 54 4d 36 4d 65 72 4f 50 49 38 52 62 49 34 30 71 5a 6a 74 61 4e 5a 69 50 4a 69 42 74 4c 31 33 50 4e 38 66 5a 64 68 6c 43 50 42 74 77 2f 63 63 39 51 50 4e 39 67 61 38 58 49 52 72 36 7a 65 7a 49 51 44 56 5a 62 51 30 48 46 4e 51 63 37 52 7a 37 2b 2f 79 53 49 55 5a 43 72 75 6f 7a 71 6f 52 63 74 32 52 59 6c 31 7a 68 65 71 61 4c 44 59 4a 7a 36 46 37 33 6c 6f 43 6d 30 67 6b 39 46 2b 51 52 6b 43 45 79 51 2b 49 35 54 67 47 66 44 37 64 61 62 73 39 4f 30 68 32 31 6a 6b 72 36 57 76 7a 67 67 37 48 6f 66 51 4d 55 30 48 78 44 4a 70 61 34 54 68 69 44 35 34 77 43 42 69 35 68 39 7a 34 46 68 59 73 56 58 4e 71 50 6a 49 70 79 42 67 45 68 45 57 69 71 62 76 62 35 54 58 30 79 76 6d 62 33 6a 53 51 74 4c 42 4b 69 55 31 67 6a 41 53 41 37 52 33 71 52 75 61 2f 52 6e 73 64 77 59 47 47 4b 4f 32 4a 75 58 55 47 42 68 48 59 42 71 55 4a 33 31 54 42 37 34 50 5a 4b 62 73 47 5a 47 4a 57 45 58 6c 4b 76 30 76 4c 61 77 3d 3d 0a 0a 68 6f 73 74 3b 78 2d 61 6d 7a 2d 63 66 2d 69 64 3b 78 2d 61 6d 7a 2d 63 6f 6e 74 65 6e 74 2d 73 68 61 32 35 36 3b 78 2d 61 6d 7a 2d 64 61 74 65 3b 78 2d 61 6d 7a 2d 73 65 63 75 72 69 74 79 2d 74 6f 6b 65 6e 0a 65 33 62 30 63 34 34 32 39 38 66 63 31 63 31 34 39 61 66 62 66 34 63 38 39 39 36 66 62 39 32 34 32 37 61 65 34 31 65 34 36 34 39 62 39 33 34 63 61 34 39 35 39 39 31 62 37 38 35 32 62 38 35 35</CanonicalRequestBytes><RequestId>6P0JMCGT5SSWQZ7F</RequestId><HostId>fRpkxx4o8cLWDvJaxF1oz0MxYH1vvjT6XDT7Lia3F5e4xI2RJYfjh3BP75Jyi0gMA1PuN2J6OjU=</HostId></Error>

We were asked to file a bug here because AWS support is unable to find the bug in this lambda code. All of this works fine with v5.9 - was v5.10.1 tested at all before release?

Custom Ringtone does not work for Task Contacts

The custom ringtone URL configurable on the CTI lightning adapter does not work for inbound Task contacts. We have chosen a user friendly custom ringto and applied this URL in the CTI adapter setting but this only works for voice contacts. Is there a way to trigger the custom ringtone for Task contacts when we are using a Managed Package?

Click to Dial not working if Queue ARN is added to Dial Number Block in Click to Dial CTI Flow

Hi Team,

Please help us understand how the Dial Number CTI Block work if Queue ARN is added to it?

When Click to Dial is made as an Outbound Call with Queue ARN added to the Dial Number Block it's not working and when inspected it gives the error in the console as below:
2021-11-11_13h21_36

But it works fine when the Click to Dial is made when the Agent is already on a Call with Customer but there is no use of the added Queue ARN in the Dial Number Block it doesn't associate the Queue ARN with the dialed contact.

We have a requirement like instead of using Quick Connect to transfer the customers call we are trying to achieve it using Click to Dial CTI Flow so our understanding is when the Queue ARN is added to Dial Number Block it will initiate a transfer to the respective Queue but it's not happening as expected the Call is being transferred to the dialed number's associated contact flow but not to the respective Queue ARN.

We have setup CTR Import in Salesforce which will capture Initial ContactId , Previous ContactId , Next ContactId and the initiation method is "Transfer" if a transfer is done using Quick Connect hence when looking at the Contact Trace Records there will be a link between the Initial Call and Transferred Call but trying to replicate the same using Click to Dial Flow's Dial Number CTI Block by adding Queue ARN but the Initial ContactId , Previous ContactId and Next ContactId are not captured it's null and the initiation method is "Inbound" instead of "Transfer".

Looking forward for a response as soon as possible and please let me know if there are any other options apart from Quick Connect to do a transfer without the call being disjoint.

Attached few screenshots for clarification

2021-11-11_20h20_32

2021-11-11_20h21_49

Thanks in Advance!!!

AC Record ID max lenght 80

When exporting Historical Queue data to Salesforce:
If Queue name in Amazon Connect is more than 56 Characters, an error is sent back by Salesforce that the max length for the field ac_record_id is 80 chars.

This is creating a limitation on the Queue names in Amazon Connect that is not documented.

Would it be possible to change this behaviour ?

Thank you

Gettign an error on sfIntervalQueue

I am gettign the following error:

[ERROR] KeyError: 'amazonconnect__StartInterval__c'Traceback (most recent call last):  File "/var/task/sfIntervalQueue.py", line 56, in lambda_handler    ac_record_id = "%s%s" % (queue_record[pnamespace + 'AC_Object_Name__c'], queue_record[pnamespace + 'StartInterval__c'])

onDestroy event is not triggered if the agent refreshes their screen while in an ACW state

Using v5.18 of the managed package

Description
The "onDestroy" CTI Script event is not triggering if an agent refreshes the screen while in an ACW state.

Steps to reproduce

  • Create a simple "onDestroy" CTI Script (e.g. makes a browser alert)
  • Start a contact as an agent
  • End the contact and enter ACW
  • Refresh the browser
  • End the contact

Expected Result
the "onDestroy" event should be triggered (in this case, displays a browser alert)

Actual Result
"onDestroy" is skipped

This is verifiable both from the behavior of the CTI script (expected behavior not functioning), as well as verifiable from the javascript console (no "onDestroy" event is logged)

S3 CORS configuration AllowedOrigins incorrect for v5.10.1

Step 9 in the documentation on how to derive the AllowedOrigins for the S3 CORS config is incorrect for managed package 5.12.0 and SAM app 5.10.1. It works fine for 5.9.

https://github.com/amazon-connect/amazon-connect-salesforce-cti/blob/main/lightning/04%20Configuring%20and%20Using%20AWS%20Serverless%20Application%20Repository%20for%20Salesforce%20Features/04%20Contact%20Channel%20Analytics.md#aws-side-setup

The AllowedOrigins URL derived by following the instructions is of the form https://xxx--amazonconnect.visualforce.com - and in 5.9 this is the actual Origin header sent in the request so it all works.

With 5.10.1 and managed package 5.12.0 however, the Origin header sent in the request is of the form https://xxx.lightning.force.com and so no CORS headers are returned.

The instructions need to be corrected to determine the correct origin to use.

How to dereference variables in CTI Flow

I have a number of CTI Blocks in my flow that I would like to collect information and pass to the runApex OpenCTI method as parameters.

Per the documentation multiple parameters can be passed as strings:

name=acme&phone=(212) 555-5555

So if I have a value:

$.actions.uid-12.results.value how can I dereference the value as a parameter?

Historical metrics import fails

In the setup guide, the steps specificall state

  1. Leave the Groupings and Filters tabs set to their defaults
  2. Select the Metrics Tab.
  3. Select ALL selectable options
  4. Select Apply

The AC Historical Queue Metrics object in Salesforce does not have fields for all report fields, and the import fails if ALL are selected. The following fields cannot be selected:

  • Adherence
  • Adherent time
  • Non-Adherent time
  • Scheduled time
  • Average agent interaction and customer hold time
  • Contacts transferred in by agent
  • Contacts transferred out by agent

Removed those from the report, and now the import is working.

Salesforce hitting maximum limit in Flex Queue

Hi ,

We are hitting Salesforce Flex queue limits, when are more updates happening on Contacts. We see that this batch is being invoked "AC_ContactCCATriggerBatch" more often like around 40 jobs in a span a 1-2 mins. This is hampering the existing Jobs are queued in our system and not allowing any scheduled Jobs which are supposed to run a Batch.

Can you please look into this issue.

How to pass value from CTI Flow to CTI action dropdown button in Salesforce Rls 5.19

Hi,

In Salesforce Rls 4.5 it was possible to create html elements and use javascript code to call connect API streams etc. But in Release 5 onwards apparently, there is no way to write code to dynamically pass values to CCP CTI buttons/html elements. If there is a CTI dropdown action button the payload can be passed to CTI flow and this value can be used in respective CTI blocks etc. Is there any way, the value from CTI flow to be passed back to CTI dropdown button so that dynamically it can populate with the value received?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.